【エクセル】一括印刷するマクロ(複数ファイル全シート)

エクスプローラを使うと、複数のエクセルを選択して右クリックから印刷すると一括で印刷することができます。

ただし、この方法は、そのエクセルファイル(ブック)でアクティブシートになっているシートだけ印刷されるという制限があります。

つまり、全シートの印刷はできないんですよね。

そこで、今回は複数ファイル(ブック)の全シートを一括で印刷できるマクロを紹介します。

マクロでの印刷なので、印刷をしたいエクセルを開かずに印刷することができます。

大量のエクセルの全シートを印刷したい場合には、重宝できるマクロだと思うので、ぜひ参考にしてください。

目次

複数ファイル全シート一括で印刷するマクロ

さっそくですが、複数ファイル(ブック)の全シート一括印刷マクロ(VBA)を紹介します。

次のマクロのコード(VBA)は、フォルダに置いてある全てのエクセルファイルの全てのシートを印刷してくれます。

Sub エクセルまとめ印刷()

Dim BookName As String
Dim CurrentSheet As Worksheet

'□----------------------------------------------------------------------------□
' ■マクロ実行前の準備■
'  (1)以下のフォルダパス(FolderPath)は環境にあわせて変更する。
'  (2)変更したフォルダパスに印刷したいエクセルファイルを配置する。
'
' ※このマクロは、エクセルファイルと同じフォルダに置いても問題ありません。
'
'□----------------------------------------------------------------------------□
Const FolderPath = "C:\temp\印刷"  ' 環境にあわせて変更する

' 指定フォルダにあるエクセルファイル名を取得
BookName = Dir(FolderPath & "\" & "*.xls")

If BookName = "" Then
  MsgBox "エクセルファイルがありません。フォルダを確認してください!"
  Exit Sub
End If

Do While BookName <> ""
' 全てのエクセルファイルを印刷するまでループ

    ' 取得したエクセルファイルがこのマクロであるか判定(マクロは印刷させない)
    If BookName <> ThisWorkbook.Name Then
    ' マクロでなかったので、印刷処理を実行する

        ' シートごとに印刷するため、一旦エクセルファイルをOpenする
        Workbooks.Open (FolderPath & "\" & BookName)

        ' エクセルファイルのシートを1つずつ取得して印刷する
        For Each CurrentSheet In Worksheets

            ' 確認用(デバッグ)
'            MsgBox "印刷ファイル名" & Chr(9) & "[" & BookName & "]" & Chr(13) & "印刷シート名" & Chr(9) & "[" & CurrentSheet.Name & "]"
            CurrentSheet.PrintOut ' 現在のシートを印刷する

        Next

        ' 全てのシートを印刷したので、エクセルファイルをCloseする
        Workbooks(BookName).Close SaveChanges:=False

    End If

    ' フォルダにある次のエクセルファイ名を取り出す
    BookName = Dir()

Loop

End Sub

エクセルのVBE(Visual Basic Editor)を使って、このコードをコードウィンドウに貼り付けてマクロにすればOKです。

コードから、印刷マクロを作る方法、印刷マクロを実行する方法は次の記事で詳しく書いているので、参考にしてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次