複数のエクセルファイルを印刷したい場面では、1つずつ開いて印刷するのは非常に手間がかかります。
フォルダ内に保存された複数ファイルをまとめて一括印刷できれば、業務効率が大幅に向上するでしょう。
本記事では、エクセルで複数ファイルを一括印刷する方法をマクロ・フォルダ指定・トラブル対処の観点から詳しく解説していきます。
エクセルで複数ファイルを一括印刷する基本的なアプローチ
それではまず、エクセルで複数ファイルを一括印刷するための基本的なアプローチについて解説していきます。
エクセル標準機能では複数の別ファイルを一括印刷する機能は用意されていません。
VBAマクロを使ってフォルダ内のファイルを順番に開いて印刷する処理を自動化するのが最も確実な方法です。
複数ファイル一括印刷のVBAコード例
指定したフォルダ内のすべてのエクセルファイルを順番に開いて印刷するVBAコードは以下の通りです。
Sub フォルダ内一括印刷()
Dim folderPath As String
Dim fileName As String
Dim wb As Workbook
folderPath = “C:\印刷フォルダ\”
fileName = Dir(folderPath & “*.xlsx”)
Do While fileName <> “”
Set wb = Workbooks.Open(folderPath & fileName)
wb.PrintOut
wb.Close SaveChanges:=False
fileName = Dir()
Loop
MsgBox “印刷完了”
End Sub
このコードは指定フォルダ内の全.xlsxファイルを順番に開いて印刷し、その後ファイルを閉じます。
「folderPath」に実際のフォルダパスを正確に設定してから実行しましょう。
特定シートのみを印刷する設定
ファイル内の特定シートだけを印刷したい場合は、VBAコードにシート指定を追加します。
wb.Worksheets(“印刷用”).PrintOut
→ 各ファイルの「印刷用」という名前のシートのみを印刷します。
ファイルごとにシート名が統一されている場合に非常に有効な方法です。
シート名が統一されていない場合は、最初のシートを指定する「wb.Worksheets(1).PrintOut」が汎用的でしょう。
印刷できない場合のよくある原因と対処法
複数ファイルの一括印刷ができない場合は、まずプリンターの接続状態を確認しましょう。
プリンターがオフラインになっていたり、用紙切れが発生していたりすると印刷処理が途中で止まります。
また、ファイルにパスワードがかかっている場合はVBAで自動的に開けないため、事前にパスワードを解除しておく必要があります。
マクロのセキュリティ設定が「すべてのマクロを無効にする」になっている場合もマクロが実行されません。
Windowsのエクスプローラーを使った一括印刷方法
続いては、Windowsのエクスプローラーを活用した複数ファイルの一括印刷方法を確認していきます。
VBAを使わずにエクスプローラーから直接複数ファイルを印刷できる場合があります。
エクスプローラーでの一括印刷はプログラミング不要で手軽に試せる方法です。
エクスプローラーからの一括印刷手順
エクスプローラーで印刷したいエクセルファイルをCtrlキーで複数選択します。
右クリック→「印刷」を選択すると、選択したファイルが順番に自動で開かれて印刷が実行されます。
ただし、この方法ではページ設定の調整ができないため、あらかじめ各ファイルの印刷設定が適切に行われている必要があります。
印刷後にファイルが自動的に閉じられる動作が基本ですが、Excelのバージョンや設定によって挙動が異なる場合があります。
エクスプローラー一括印刷の注意点
エクスプローラーからの一括印刷では、一度に選択できるファイル数に実質的な制限がある場合があります。
ファイル数が多すぎると処理が不安定になる場合があるため、大量ファイルにはVBAマクロの使用をおすすめします。
また、複数シートを持つファイルの場合はすべてのシートが印刷される場合があります。
特定シートだけを印刷したい場合はVBAマクロが適しているでしょう。
印刷設定を統一してから一括印刷するポイント
複数ファイルを一括印刷する前に、すべてのファイルの印刷設定(用紙サイズ・向き・余白・印刷範囲)を統一しておくことが重要です。
設定がバラバラだと印刷結果がファイルごとに異なってしまいます。
VBAでファイルを開いて印刷設定を上書きする処理を追加することで、均一な印刷結果が得られます。
印刷設定をVBAで一括変更してから印刷する方法
続いては、VBAで印刷設定を一括変更してから印刷する方法を確認していきます。
各ファイルの印刷設定がバラバラな場合でも、VBAで統一設定を適用してから印刷できます。
印刷設定の統一とファイルの一括印刷を組み合わせることで、完成度の高い自動化が実現できます。
印刷設定を変更するVBAコードの例
With wb.Worksheets(1).PageSetup
.PaperSize = xlPaperA4
.Orientation = xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = False
End With
wb.Worksheets(1).PrintOut
このコードはA4縦向きで横1ページに収めて印刷する設定を各ファイルに適用してから印刷します。
PageSetupオブジェクトのプロパティを変更することで余白・ヘッダー・フッターなども一括設定できます。
印刷ログをエクセルに記録する方法
どのファイルを印刷したかのログを記録しておくと、後から確認する際に便利です。
VBAコードの中に印刷したファイル名と日時をシートに書き出す処理を追加することで自動的にログが作成されます。
大量のファイルを定期的に印刷する業務では、ログ管理の仕組みを取り入れておくと管理が楽になるでしょう。
エラー処理を加えた安全な一括印刷マクロ
ファイルが見つからない、プリンターエラーが発生するなどのトラブルに備えて、エラー処理を加えることも重要です。
「On Error Resume Next」や「On Error GoTo エラー処理ラベル」を活用することで、エラーが発生しても処理が止まらないマクロが作成できます。
エラーが発生したファイル名をログに記録しておくと、後から確認・再印刷が可能です。
まとめ
本記事では、エクセルで複数ファイルを一括印刷する方法をVBAマクロ・エクスプローラー・印刷設定の統一などの観点から解説しました。
VBAを使ったフォルダ内ファイルの一括印刷は、業務の自動化に非常に効果的な方法です。
エクスプローラーからの印刷はプログラミング不要で手軽に試せる反面、細かい制御には向きません。
用途と規模に応じて適切な方法を選び、複数ファイルの一括印刷を業務に活かしてみてください。