- ベストアンサー
Excelでの「差込み印刷」について
標題のとおりなんですが、アクセスやワードでの機能は知っているんですがExcelでもできるんでしょうか? 具体的に言うと、例えば[sheet1]を何らかの書式、[sheet2]をデータベースとします。 そして、[sheet2]にある番号・氏名・住所みたいな情報を、[sheet1]に1人ずつプリントしたいんです。 (この説明でわかってもらえたでしょうか?) 何らかのマクロを使うことになるのかも知れませんが、このような仕組みのヒントにでもなるようなサイトはありませんか? もしくは、「その程度のことならここで説明してやるよ」というすごい方はいませんか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sheet2のA列に「番号」、B列に「氏名」、C列に「住所」があるリスト形式のデータ(1行目が項目名、2行目からがデータ、データのある行のA列に空白セルは無し)があり、Sheet1のB2のセルに「番号」、B4のセルに「氏名」、B6のセルに「住所」を差し込んで印刷すると仮定します。 Sub 差込印刷() '初期設定 Dim Y As Integer Dim S1, S2 As Worksheet Set S1 = Sheets("Sheet1") Set S2 = Sheets("Sheet2") Y = 2 Sheets("Sheet1").Select '繰り返し処理 Do Until S2.Cells(Y, 1).Value = "" S1.Cells(2, 2).Value = S2.Cells(Y, 1).Value 'Sheet2のA列のセルの値をSheet1のB2のセルに入力 S1.Cells(4, 2).Value = S2.Cells(Y, 2).Value 'Sheet2のB列のセルの値をSheet1のB4のセルに入力 S1.Cells(6, 2).Value = S2.Cells(Y, 3).Value 'Sheet2のC列のセルの値をSheet1のB6のセルに入力 S1.PrintOut Copies:=1 'Sheet1を印刷 Y = Y + 1 Loop MsgBox ("差込印刷終了") End Sub このマクロを実行すれば、Sheet2の2行目から、A列が空白セルになるまで、連続して差込印刷します。(Excel97で動作確認済み)
その他の回答 (2)
- TTak
- ベストアンサー率52% (206/389)
マクロを使って、Sheet1に印刷するすべてのページを準備する方法があります。つまり、印刷フォーマットのシートを作って、そこにSheet2の値をペーストし、Sheet1に改ページしながら、ペーストしてゆくわけです。プロセスは、差し込みではありませんが、結果は差し込みと同じですね。当然、下方向にページ数がふくらんで行くことになりますが、印刷後に削除するようにすれば、問題ないと思います。 以前、ループステートメント内にPrintOutメソッド使ったこともありましたが、印刷ダイアログが次々と表示され、処理が追いつかずにpcがフリーズしたり、プリンターが追いつかずに、文字化けするなどの不具合がありました。従って、データレコードが多い場合、ループステートメント内にハードのスペックを考慮しなければならないマクロは、私は推奨しません。 ワードの標準的な差し込み機能を使うために、枠や罫線の設定に費やす労力と、上記提案のマクロを完成させる労力と、後々の使い勝手を含めてどちらが効率的か判断する必要がありそうですね。がんばってください。
お礼
マクロがあまり得意でない私にとって、これが少しでもマクロを覚えるキッカケになればとも思ったのですが、なかなかうまくいきません。 どうやら、多少手間がかかったり制約があったりしてもワードで枠を作って差込みをした方が良さそうですね。 アドバイスありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
>アクセスやワードでの機能は知っているんですが ワードに「差込み印刷」の機能があり、差込むデータは (1)ワードの文書からや(2)エクセルのシートから出来きます。 それ=(2)をご存知なら、なぜ本質問が出るのでしょうか。 #1のお礼などを見ると、そもそもVBAで組むことを望んでおられるようでもないし、不思議な感じです。失礼ながら、ワードの文書にエクセルデータを指し込んだご経験がないのでは。文書はエクセルのシート(本質問ではShhet1)に拘らず、どちらかといえば、ワードで作る方を原則になっているようなので、そちらも検討してみて下さい。 差込み文書は、エクセルのシートでないと不都合ですか。 またVBAでやる方法には、#1のご回答のように、データ行を1つずつづらして繰り返す方法に他に、ワードVBAでctiveDocument.MailMerge.MainDocumentType・・・ といったコーディング方法があります。
補足
>失礼ながら、ワードの文書にエクセルデータを指し込んだご経験がないのでは。 ?マークがないということは、これはクレームなんでしょうか? お言葉ですが、ワードの文書(書状など)の宛名などにはエクセルのデータベースから差込みしています。 細かい枠の入った書式を作るのには、ワードよりもエクセルの方が作りやすいので(私はということにしておきます)、エクセルのシートにデータを差し込みたいと思ったんです。 不思議ですか? >差込み文書は、エクセルのシートでないと不都合ですか。 これにも?マークがないので、これもクレームなんでしょうか? 不都合を感じてるから、簡単なやり方があったら知りたいから質問してるんですけどね。 ちなみに、あなたはもう答えなくていいですよ。 あまり知らないみたいですしね。
お礼
やっぱりマクロですよねぇ。 windowsになる前のロータスでは結構マクロを組むのが好きだったんですけど、実はExcelになってからは一度もやったことがないんです。 これってマクロのシートみたいなのに入力するんですよね。 言ってる意味はわかるんですけど、なんか難しそうだなぁ~って感じです。 でも、いい機会なのでとりあえずやってみますネ。 ありがとうございました。