はじめに
前回はVBAマクロからExcelファイルを指定してブック全体を印刷する方法をご説明しました。
今回は前回の内容を更に拡張して、選択した複数のExcelファイルを一括でブック全体印刷する方法をご説明します。
ブック全体指定して印刷していExcelファイルが複数ある場合に本記事で紹介するVBAマクロを使用すれば、今までより遥かに作業効率が向上すること間違いなしです!
VBAマクロで複数ファイルを一気に印刷する本記事の目的
前回の記事ではVBAマクロのSheets メソッドを使用してExcelファイルのブック全体を一括印刷する方法をご説明しました。
本記事では、前回の記事をベースに選択するファイルを複数にし、for文を使い印刷する処理を繰り返すことで、選択したExcelファイルを一気に印刷する方法をご紹介します。
前回から追加されるのは、印刷に関する処理ではなくファイル複数選択と、印刷処理を繰り返す制御文の部分となります。
VBAマクロで複数ファイルを一気に印刷する処理の流れ
処理の流れとしては、
印刷したいファイルをダイアログで 複数 選択
↓
Workbookオブジェクトとして開く
↓
Sheets.PrintOut によりブック全体を印刷する
↓
ブックを保存しないで閉じる
↓
上記処理を選択されたExcelファイルの件数分繰り返す
という流れになります。
VVBAマクロで複数ファイルを一気に印刷する関数・プロパティなど
Application.GetOpenFilename メソッド (Excel)
expression.GetOpenFilename (FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
VBAマクロで複数ファイルを一気に印刷するサンプルコード
それではサンプルコードです。前回から対話的に印刷ファイルを複数選択する部分が追加となっています。
Sub 複数ファイル一括印刷() Dim FileName As Variant FileName = Application.GetOpenFilename _ ("Microsoft Excelブック,*.xls?", MultiSelect:=True) If Not IsArray(FileName) Then Exit Sub End If Dim cnt As Long cnt = UBound(FileName) Dim rc As Long rc = MsgBox(cnt & "ファイルが選択されました。" & vbCrLf & _ "印刷を開始しますか?", vbOKCancel + vbInformation) If rc = vbOK Then Dim n As Long For n = LBound(FileName) To UBound(FileName) Dim wb As Workbook Set wb = Workbooks.Open(FileName(n)) wb.Sheets.PrintOut wb.Close False Next n MsgBox "印刷終了しました。" End If End Sub
終わりに
今回の改良で複数のExcelファイルを一括でブック全体を印刷できます。複数シートで構成せれているExcelファイルで、それが大量にあるケースで便利です。
前回に続いて注意点として印刷の際に選択されるプリンタはOSの方で規定のプリンタに指定されているものが自動選択されます。印刷したい形式(紙なのかPDF化するのか等)の目的に応じて選択してください。
印刷するプリンタをVBAマクロ側でコントロールする場合はActivePrinterパラメータで指定するのをお忘れなく!間違って他の部署のプリンタを占領してしまうことがないようにくれぐれもご注意ください汗