【ExcelVBA】PrintOutを使用して印刷する際に、ドキュメント名を変更する方法
Q&A
WorkSheetのレコードを順に印刷しています。
.PrintOut Copies:=1, Collate:=False, ActivePrinter:="プリンタ名"
現在はドキュメント名が全て同じ「テスト.xlsm」で印刷ジョブが作成されます。
レコードごとにドキュメント名を変更したいのですが良い方法が見つかりません。
良い方法をご存じの方、ご教授お願い致します。
Q&A
WorkSheetのレコードを順に印刷しています。
.PrintOut Copies:=1, Collate:=False, ActivePrinter:="プリンタ名"
現在はドキュメント名が全て同じ「テスト.xlsm」で印刷ジョブが作成されます。
レコードごとにドキュメント名を変更したいのですが良い方法が見つかりません。
良い方法をご存じの方、ご教授お願い致します。
WorkSheetのレコードを順に印刷しています。
ここで言われている「レコード」とは、なんのことでしょうか? 配列のこと?
現在はドキュメント名が全て同じ「テスト.xlsm」で印刷ジョブが作成されます。
複数のシートを印刷した時の、プリンターのキューに表示される名称のことだと思いますが、それが、シートごとに同じだと言われているのでしょうか?
また、「テスト.xlsm」とは、このマクロが書かれているファイル名でしょうか?
@KWEYT
Questioner
説明が不足しており申し訳ありません。
請求書を印刷するVBAを作成しています。
「テスト.xlsm」はファイル名になります。
シートは全部で3つです。
1シート目には「印刷」ボタン等を配置しています。
2シート目は請求書の印刷レイアウトになります。
1シート目の「印刷」ボタンが押されるとデータベースからデータを取得するようになっており、WorkSheetのシートに100レコード程度が追加されます。
それを1レコードずつ順にループさせて2シート目のセルに値をセットしています。
将来的にPDF保管することも考えて請求先等をプリンタのドキュメント名にしたいのですが、すべてファイル名の「テスト.xlsm」になってしまいます。
処理の概要を理解しました。ありがとうございます。
将来、PDF保管するとなると、1枚ずつの印刷になりますね。
(100レコードを100シートに展開して、1スプールで印刷すれば、「ドキュメント名」をそれほど意識しないのかな、と思いましたが)
ネットの情報を調べた限りでは、言われている「ドキュメント名」をVBAで変更することはできないようです。
代替案としては、いっそのこと、PDFに出力してはどうでしょうか。
現在の.PrintOut
を.ExportAsFixedFormat
に変えて、引数にファイル名を指定するだけ(ほぼ)です。PDF出力後にプレビューを表示させる引数があるので、それを指定することで、プレビュー画面から印刷指示ができると思います。
ご参考まで。
@KWEYT
Questioner
>代替案としては、いっそのこと、PDFに出力してはどうでしょうか。
>現在の.PrintOutを.ExportAsFixedFormatに変えて、引数にファイル名を指定するだけ>(ほぼ)です。PDF出力後にプレビューを表示させる引数があるので、それを指定する>ことで、プレビュー画面から印刷指示ができると思います。
「ドキュメント名」はVBAではやはり変更できないのですね。
非常に助かりました。
上記方法で試してみます。有難うございました。