はじめに
日々の業務でExcelで作成した書類を印刷する事があると思います。
しかし、複数シートに渡って作成した書類だといちいち「ブック全体」を指定して印刷せねばならず、意外と手間のかかる作業になりがちです。
ときには同じようなExcelブックを何十枚、何百枚と印刷せねばならないこともあるでしょう。
同じ作業をいちいち繰り返して気がつけばまた定時をオーバー、などということも起こりかねません。
本記事ではVBAマクロを使って印刷を自動で行う方法をご説明いたします。
VBAマクロでExcelを開かないでブック全体を印刷する本記事の目的
本記事ではVBAマクロのSheets メソッドを使用してExcelファイルのブック全体を一括印刷する方法をご説明します。
通常のExcelファイルではデフォルトでシート単位の印刷になっているため、複数シートに渡るExcelブックの場合、印刷画面で「ブック全体を印刷」を選択しないと全体を印刷することができません。ですが、VBAマクロのSheets メソッドのPrintOutを使うことで一括でブック全体を印刷することができます。
VBAマクロでExcelを開かないでブック全体を印刷する処理の流れ
処理の流れとしては、
印刷したいファイルをダイアログで選択
↓
Workbookオブジェクトとして開く
↓
Sheets.PrintOut によりブック全体を印刷する
↓
ブックを保存しないで閉じる
という流れになります。
VBAマクロでExcelを開かないでブック全体を印刷する関数・プロパティなど
Sheets メソッド (Excel)
Sheets.PrintOut(From、 To、複写、 Preview、 activeprinter、 PrintToFile、 Collate、 prtofilename、 ignoreprintareas)
VBAマクロでExcelを開かないでブック全体を印刷するサンプルコード
Sub ブック全体印刷() Dim FileName As Variant FileName = Application.GetOpenFilename _ ("Microsoft Excelブック,*.xls?") If VarType(FileName) = vbBoolean Then MsgBox "キャンセルされました" Exit Sub End If Dim wb As Workbook Set wb = Workbooks.Open(FileName) wb.Sheets.PrintOut wb.Close False MsgBox "印刷終了しました。" End Sub
終わりに
このVBAマクロを使えば、一括でブック全体を印刷できるので、複数シートで構成せれているExcelファイルを印刷するときには便利です。
印刷の際に選択されるプリンタはOSの方で規定のプリンタに指定されているものが自動選択されます。印刷したい形式(紙なのかPDF化するのか等)の目的に応じて選択してください。
印刷するプリンタをVBAマクロ側でコントロールする場合はActivePrinterパラメータで指定するのをお忘れなく!間違って他の部署のプリンタを占領してしまうことがないようにくれぐれもご注意ください汗