ねぇもりさん、毎週の定例会議で資料をたくさん印刷してるんだ。
エクセルが10ファイル・それぞれ5シート。全部まとめて印刷できる方法ないかなぁ?
エクセルが10ファイル・それぞれ5シート。全部まとめて印刷できる方法ないかなぁ?
もり
それなら、一括印刷できるマクロを作っちゃおう
複数のエクセルファイルの全シートを一括で印刷できるマクロを紹介します。
1つのExcelファイルの中に5シートあり、計10ファイルの場合、5シート×10ファイル=50シートが一括で印刷できちゃいます!
スポンサーリンク
指定ファイルの全シートを一括印刷するマクロ
印刷対象のファイルとは別の「新しいExcelブック」を作成し、その標準モジュールに貼り付けて使用してください。
※用紙サイズ、縦横xページなどのレイアウト設定の処理はいれてません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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 |
マクロの使い方
マクロを実行すると「ファイルを開く」ダイアログが出現するので、印刷したいファイルを選択します。
- ShiftキーまたはCtrlキーを使用して、印刷したいファイルをすべて選択
- 「開く」を押す
確認メッセージが登場するので、問題なければ「OK」を押します。
処理のポイント
ポイントは、配列インデックスの「最小値」と「最大値」を取得するLBoundとUBoundをFor文の条件にしていることです。
1 2 3 4 5 6 7 8 9 10 |
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 |
配列FileName(1~n)には、選択したファイルのフルパスが格納されています。
WorkBooks.Openメソッドでファイルを一つずつ開き、PrintOutメソッドで印刷します。
Workbookオブジェクト.Sheets.PrintOutメソッド
→ワークブック内のすべてのシートを印刷します。
(おまけ)各ファイル1シートのみを印刷したい場合
1ファイルにつき1シートのみの場合は、VBAを使わずにサクッと印刷できちゃう方法があります。
エクスプローラー上で、印刷対象のファイルをまとめて選択し、マウスを右クリック→印刷でOKです。
資料をたくさん印刷するルーチン作業をかかえている方は、一括印刷のツールを作っておくと使い回しができるのでラクちんですね!
スポンサーリンク
スポンサーリンク