Excelでは複数シートを一括で印刷する方法はあるんです。
ただ、Wordのように一つの文書に、ExcelやAccessのデータベースを読み込んで連続で印刷する機能はないです。
まさか、印刷したいデータ分のシートを作成するわけににもいかないですよね。データによっては数百シート作成しなければならなくなります。
やはりここはVBコードで対応するしかないようです。
作成したサンプルのExcelファイルはダウンロードできるようにしますので、VBコードの公開はしません。
今回は、作成したExcelファイルの使い方を解説します。
印刷するシートは以前当ブログで解説した「関数で取引明細」を使用します。
このように、必ず印刷の元になるデータベースと印刷用のシートを作成します。
データベース(必要に応じデータの並び替え等を行っておく)

印刷用シート

印刷用の「個別取引明細書」は「顧客№」で「売上データ」からVLOOKUP関数などを使い自動でデータ表示するように作成しています。
Wordのように文書を作成し、表示したいデータを個々に差し込んでいくのではなく、データベースのキーになる部分(今回は「顧客№」)から、関数などを使い、印刷用のシートを作成しておきます。
ということは、そのキーになる部分(今回は「顧客№」)を「書き換えて印刷する」という処理を行えば、連続印刷できるわけです。
印刷するための設定をする「印刷コントロール」というシートを作成しました。

①DBシート ~ データベースに使用するシート名を指定
②DB開始位置 ~ データベースの始まる位置をセル番地で直接指定する(だいたい「a1」からだと思います。)

③DB表示列 ~ データベースのフィールドで印刷シートに表示させるキーとなる部分(今回は顧客№)をセル番地で直接指定する。

④重複印刷 ~ ③DB表示列で指定したキーとなる項目が重複している場合、重複に関係なくすべて印刷するか(する)、重複のキーがある場合は読み飛ばして次のキー項目を印刷するか(しない)を指定する。
※今回は「しない」を選択しました。ということは、一度読み込んだキーと次に読み込まれるキーが同じならば、新しいキーが読み込まれるまで読み飛ばします。(ここは使ってみるとわかります。)
⑤印刷シート ~ 印刷するシート名を指定。
⑥印刷位置 ~ ③DB表示列で指定したキー項目を印刷シートのどのセルに表示させるか、セル番地で直接指定する。

設定が終わったら、下の図形(すでにマクロ登録されている)をクリックすると印刷シートへ画面が切り替わり印刷が開始されます。

⑤印刷位置で指定したセル「a5」部分にデータベースから読み込まれたキーが順に表示され、印刷される。

最後のデータの読み込みが終わると終了のお知らせがでます。

このVBコードは、なんのことはない、指定されたデータベースのキーとなる項目を順に表示し印刷するだけのプログラムです。
そのため、印刷するシートはキー項目からすべてを表示できるように作りこまなければなりません。むしろこちらのほうが大事です。
それが完成すれば、あとは「印刷コントロール」シートへ必要項目を設定し、「印刷開始」ボタンをクリックです。
今回は、キーが重複する少し面倒な明細をサンプルに解説しましたが、キーが重複しないデータベース(住所録等)を使用し案内状や見積もり書などにも使えると思います。
印刷用のシートそのものは、複数のデータベースから作成してもかまいません。ただ、表示させる(読み込ませる)キーが存在するデータベースは一つが原則です。
次回、この連続印刷をほかの例を使用して解説してみます。
サンプルファイルはサイドバーの使用サンプルファイルからダウンロードできます。
0 件のコメント:
コメントを投稿