かんたんワンクリック!VBAマクロでExcelを開かないでブック全体を印刷する方法【サンプル有り】

はじめに

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