こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル複数シートのデータをワードに差し込み印刷

データはエクセルの複数シートにあります。
A2列に氏名、D4列に出欠、他の列には日付、課題などが入力されています。
欠席者のみに、氏名入りで、欠席した回の課題をお知せする文書を作りたいです。
シートがひとつなら、ワードの差込印刷を使ったことがあります。でも、複数シートからデータをとりたい時は、ワードの差込印刷はできますか?
ワードの差込印刷が無理なら、エクセルの他のシートにお知らせを作って、差込印刷みたいなことができる方法はありますか? エクセルだけでできたら、それはそれで嬉しいのですが。

投稿日時 - 2005-04-17 13:21:07

QNo.1336084

暇なときに回答ください

質問者が選んだベストアンサー

こんにちは。
そのやる気が大事です。
先ず、新しいブックでテストしてみましょう。

---------------------------------------------------
【VBAコードの作成方法】

●新しいブックを開く
●メニューバーの「ツール」 > 「マクロ」 > 「セキュリティー」
  表示されるセキュリティーの画面の「セキュリティーレベル」タブをクリック
  高・中・低の「中」を選択(既に選択してあれば無視)し、OKボタン
  これは一度設定しておけば未来永劫さわることはありません
●メニューバーの「ツール」 > 「マクロ」 > 「Visual Basic Editer」
  ここでVBEの画面が表示されます
●VBEのメニューバーの「挿入」 > 「標準モジュール」
  ここで画面右側に白い作業領域が表示されます
  そこに下記プログラムコードをコピーして貼り付けます
●最上段タイトルバーの右の「×」ボタンでVBEを閉じます
  これでVBAコードの作成は終了です。

------------------------------------------------------
【データについて】

Sheet1,2 を氏名等のデータとし、Sheet3を印刷用とする
Sheet1,2 は次のレイアウトとする
  1行目見出し(A列・氏名)(D列:出欠)
  2行目からデータ
  D列出欠データの欠席は、「欠」と1文字入れる

--------------------------------------------------------
【実行内容】

Sheet1,2の出欠欄(D列)が「欠」の人の氏名(A列)を
印刷用シート(Sheet3)のセル「C5」に差込み、印刷する

--------------------------------------------------------
【VBAの実行方法】

●メニューバーの「ツール」 > 「マクロ」 > 「マクロ」
  ここでマクロ画面が表示されますので
  実行したいマクロ(TestPrint)を選択し、
  右上の「実行ボタン」をクリック

---------------------------------------------------------
【VBAのコード】Sub TestPrint ~ EndSub までを貼り付ける
---------------------------------------------------------

Sub TestPrint()
 Dim Sht As Worksheet
 Dim R As Long
 Application.ScreenUpdating = False
 Worksheets("Sheet3").Activate

 For Each Sht In Worksheets
  If Sht.Name <> "Sheet3" Then
   For R = 2 To Sht.Range("A65536").End(xlUp).Row
    If Sht.Range("D" & R).Value = "欠" Then
     Range("C5").Value = Sht.Range("A" & R).Value
     ActiveSheet.PrintPreview
    End If
   Next R
  End If
 Next Sht

Application.ScreenUpdating = True
End Sub

-------------------------------------------------------------

これは実際の印刷ではなく印刷プレビューが表示されます。
どうですか? 簡単でせう?(^^;;;

実際のお知らせもVBAでやりたくなったら、そのレイアウトを提示してください。
A列(氏名)B列(日付)C列(項目1)・・・
見出しは、何行目にあるか、データは何行目からか。
印刷用シートを作成するわけですが、そのシート名。
印刷用シートのどのセルにデータを差込むか等。

以上です。

投稿日時 - 2005-04-18 11:43:00

補足

 お試しコードありがとうございました。VBA すごいです! もし自由に使いこなせたら なんでもできちゃいそうで夢が(?!)ふくらみますね。
 どんなVBAを組んで、どんな作業をしようか、わくわくしながら考えちゃいました。っで、あんまり複雑なものを教えていただくと、そのコードを読み取って後々自分で加工していくのが難しそうなので、まずは手はじめにVBAでリストを作って、リストからワードに差込印刷というパターンでやってみようかと思うのですが、そういう方法はどうなのでしょうか?
 【データ】
●シート1からシート20まで、同じ配列でデータがあります。
●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。)
●A列に到達度、B列に出欠をいれました。
●C列からM列が氏名、課題、その他のデータです。
●リストはシート21にあります。
 【VBAでやってみたい作業】
●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける
●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける

っというのが、私が乏しい知識で考えたリストの作り方なのですが。。。これじゃ、不具合がでるかもしれなくて、こんなかんじの作業かなという程度です。
こんなVBAってできるものでしょうか?
それとも、こういう作業はVBAではなく、他のやり方がいいのでしょうか?

投稿日時 - 2005-04-20 16:04:13

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちは。
残念ながら複数シートから差込みはできません。
で、代案としては。

(1)差込む度に差込みシートを代える
(2)シート毎に差込み文書を作成
(3)シートを増やしそこに全てのシートをコピーし差込む

上記はシートが多いとちょと面倒ですよね。
で、あと考えられるのはエクセルのみでやる場合です。
それにはVBAを使うことになります。
VBAにトライしてみますか?
なら簡単なコードをアップしますが・・・。

以上です。

投稿日時 - 2005-04-17 16:53:03

補足

VBAってマクロを組むとか、そういうやつですか?
エクセル初心者なので、マクロはまったくやったことがありません。・・・でも、やってみたいなあ。(頭が良くなくてもできるでしょうか?)
できるかどうか、ぜんぜん自信無いのですが、手ほどきお願いいたします。

投稿日時 - 2005-04-17 19:42:39

あなたにオススメの質問