ワンクリックで複数ファイル印刷!VBAマクロで複数ファイルを一気に印刷する方法【サンプル有り】

はじめに

前回は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パラメータで指定するのをお忘れなく!間違って他の部署のプリンタを占領してしまうことがないようにくれぐれもご注意ください汗