• ベストアンサー

EXCEL

「EXCEL」で、ある名簿の一覧と案内文を作ってしまいました。 一覧にある名簿をその案内文に差し込んで同じ案内文で名前のところだけ替えられる「差込印刷」なるものをしたいのですが、「EXCEL」ではそういうことは出来ないのでしょうか。 「WORD」では差込印刷機能があって、以前「EXCEL」で作った一覧を「WORD」で作った案内文に差込印刷をしたことがありますが、今回の案内文は、ちょっと表が多かったので、「EXCEL」で作ってしまいました。この「EXCEL」で作った案内文を「WORD」にエクスポートすることも試したのですが、「EXCEL」の方では、1ページに収まるように自動倍率で作成したためか、「WORD」に貼り付けても途中で切れてしまい、うまく出来ません。どなたかこれに対する解決策をご存知の方はいませんか。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAでやるのもそんなに難しくならない。骨子は下記。 Sub prt01() d = Worksheets("sheet2").Range("a1").CurrentRegion.Rows.Count For i = 1 To d Worksheets("sheet1").Cells(3, 1) = Worksheets("sheet2").Cells(i, 1) Worksheets("sheet1").Cells(3, 2) = Worksheets("sheet2").Cells(i, 2) Worksheets("sheet1").Range("a1:e23").PrintOut Next i End Sub ●sheet1に書簡のエクセルシートがあり、名簿がsheet2にあるとします。自分の場合に合わせて、上記sheet1,sheet2名を置き換える。 ●range("a1")はsheet2における、実質的に名簿が始まる行で もって、a1をおきかえる。 ●Cells(3, 1)はsheet2より項目を持ってくるセルを設定する。Cells(3, 2)も同じ。必要項目数だけ前行をコピーして増やし修正する。 B3-->Cells(3,2),F3-->Cells(3,6),J2-->Cells(2,10)の要領で表現してください。 ●Cells(i, 1)はsheet2の、もって行く元のセルで置換える。 Cells(i, 2)も同じ。項目がもっとあれば増やす。 ●Range("a1:e23").PrintOutのRange("a1:e23")はsheet1の 印刷すべき範囲で置換えること。 ●PageSetupの色々な設定をしたくなったら、印刷操作をしてマクロの記録を取って、真似して加えてください。

meikotk
質問者

お礼

すごいですね。ありがとうございました。早速試してみます。

その他の回答 (2)

  • seasun
  • ベストアンサー率41% (60/146)
回答No.2

VBAが組めないのであれば簡単にする差込み印刷はMS-Wordだけです。 案内本文に「表が多かった」ということであれば本文はWordで作って表の部分だけWordの本文上に作る。 Wordの書式ツールバーの中に「Excelのワークシートの挿入ボタン」で文書上にExcelのワークシートエリアを確保して、そのシートにカット&ペーストすると改めて打ち直す必要も無いし、大きさも可変で扱えます。(挿入からファイルの挿入でExcelのファイルを挿入するということではないので念のため。) あとはツール→差込み印刷ヘルパーで定型書簡を作ればOKではないですか。

meikotk
質問者

お礼

ありがとうございます。VBAを使わない方法として参考にさせていただきます。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

VBAは組めますか? 案内文の名前を入れるセルに 「=(名簿の名前の最初のセル)」 としておいて、印刷が終わるとこれの行数を+1するVBAを作ればOKでは ないでしょうか。 (名簿の名前が全部同じ列の場合ですが)

meikotk
質問者

お礼

VBAというものがあることを初めて知りました。 さっそく解説書で勉強しているところです。ありがとうございました。

関連するQ&A

専門家に質問してみよう