- ベストアンサー
エクセル複数シートのデータをワードに差し込み印刷
データはエクセルの複数シートにあります。 A2列に氏名、D4列に出欠、他の列には日付、課題などが入力されています。 欠席者のみに、氏名入りで、欠席した回の課題をお知せする文書を作りたいです。 シートがひとつなら、ワードの差込印刷を使ったことがあります。でも、複数シートからデータをとりたい時は、ワードの差込印刷はできますか? ワードの差込印刷が無理なら、エクセルの他のシートにお知らせを作って、差込印刷みたいなことができる方法はありますか? エクセルだけでできたら、それはそれで嬉しいのですが。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 そのやる気が大事です。 先ず、新しいブックでテストしてみましょう。 --------------------------------------------------- 【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)・・・ 見出しは、何行目にあるか、データは何行目からか。 印刷用シートを作成するわけですが、そのシート名。 印刷用シートのどのセルにデータを差込むか等。 以上です。
その他の回答 (1)
- taocat
- ベストアンサー率61% (191/310)
こんにちは。 残念ながら複数シートから差込みはできません。 で、代案としては。 (1)差込む度に差込みシートを代える (2)シート毎に差込み文書を作成 (3)シートを増やしそこに全てのシートをコピーし差込む 上記はシートが多いとちょと面倒ですよね。 で、あと考えられるのはエクセルのみでやる場合です。 それにはVBAを使うことになります。 VBAにトライしてみますか? なら簡単なコードをアップしますが・・・。 以上です。
補足
VBAってマクロを組むとか、そういうやつですか? エクセル初心者なので、マクロはまったくやったことがありません。・・・でも、やってみたいなあ。(頭が良くなくてもできるでしょうか?) できるかどうか、ぜんぜん自信無いのですが、手ほどきお願いいたします。
補足
お試しコードありがとうございました。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ではなく、他のやり方がいいのでしょうか?