VBAで自動化 VBA一覧 ファイル・印刷操作 印刷設定

【VBA】複数シートを印刷する方法と活用例

Excelで複数のシートを印刷する際、手作業で印刷するのは面倒ですよね?
VBAが使えるなら、指定したシートや全シートをワンクリックで印刷することが可能です

この記事では、VBAを使って複数シートを一括で印刷する方法や、便利なカスタマイズ方法を詳しく解説します。

複数シートを一括印刷する基本的な方法

✅ ブック内のすべてのシートを印刷

VBA でブック内の全シートを一括で印刷します、Sheets.PrintOutを使います。

Sub PrintAllSheets()

Sheets.PrintOut

End Sub

📌このコードを実行すると、すべてのシートが印刷される!
📌 「Ctrl + P」を押す手間を省略!

✅指定したシートだけを印刷

Sheets(Array(...)).PrintOutを使うと、特定のシートのみを印刷できます。

Sub PrintSpecificSheets()

Sheets(Array("Sheet1", "Sheet2")).PrintOut

End Sub

📌Sheet1とのみをSheet2印刷!
📌シート名は""で囲む必要がある!

✅シートを1枚ずつ印刷

全てのシートを1枚ずつ順番に印刷したい場合は、For Eachを使います。

【VBA】For Each を使ったセル範囲の操作方法

Sub PrintSheetsIndividually()

Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets

ws.PrintOut

Next ws

End Sub

📌各シートを1枚ずつ印刷!
📌プリンターの設定によって、各シートを別ジョブとして印刷可能!

✅ 名前の一部を含むシートを印刷

シート名に特定のキーワードが含まれる場合のみ印刷できます。

Sub PrintSheetsByName()

Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets

If InStr(ws.Name, "売上") > 0 Then

ws.PrintOut

End If

Next ws

End Sub

📌 「売上」という単語を含むシートだけ印刷!
📌売上管理や部門別シートの印刷に便利!

印刷プレビューを表示する

✅ 印刷前にプレビューを確認

誤った印刷を防ぐために、プレビューを表示する方法です。

Sub PrintPreviewAllSheets()

Sheets.PrintPreview

End Sub

📌すべてのシートのプレビューを表示! 📌
PrintOut代わりにPrintPreview使う!

✅ 指定シートのプレビュー

Sub PrintPreviewSpecificSheets()

Sheets(Array("Sheet1", "Sheet2")).PrintPreview

End Sub

📌Sheet1とのSheet2プレビューを表示!

印刷範囲を設定してから印刷

データの範囲を適切に設定してから印刷すると、不要な空白ページの印刷を防ぎます。

✅ 指定範囲のみ印刷

Sub SetPrintAreaAndPrint()

Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets

ws.PageSetup.PrintArea = "$A$1:$D$20" ' 印刷範囲を設定
ws.PrintOut

Next ws

End Sub

📌各シートのみをA1:D20印刷!
📌不要な空白ページをなくせる!

✅データがある範囲のみ印刷

Sub SetDynamicPrintAreaAndPrint()

Dim ws As Worksheet
Dim lastRow As Long, lastCol As Long
For Each ws In ThisWorkbook.Sheets

lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
ws.PageSetup.PrintArea = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)).Address
ws.PrintOut

Next ws

End Sub

📌データの最終行・最終列を取得し、印刷範囲を自動設定!
📌データの追加に対応できる!

【VBA】最終行番号を取得する方法

【VBA】最終列を取得:範囲指定

1 ページに収めて印刷

✅ 各シートを 1 ページにまとめる

Sub PrintFitToOnePage()

Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets

With ws.PageSetup

.Zoom = False ' 自動縮小を有効化
.FitToPagesWide = 1
.FitToPagesTall = 1

End With

ws.PrintOut

Next ws

End Sub

📌各シートを 1ページに言って印刷!
📌横長の表でも、1ページに褒められる!

両面印刷を設定

Sub PrintWithDuplex()

Application.ActivePrinter = "プリンター名"
Sheets.PrintOut Copies:=1, Collate:=True, Duplex:=True

End Sub

📌両面印刷を適用(プリンターが対応している必要あり)!

ユーザーが選択したシートを印刷

✅ 印刷対象のシートを選択

Sub PrintUserSelectedSheets()

Dim ws As Worksheet, selectedSheets As String
selectedSheets = InputBox("印刷するシート名をカンマ区切りで入力(例: Sheet1, Sheet2)")

If selectedSheets <> "" Then

Sheets(Split(selectedSheets, ",")).PrintOut

Else

MsgBox "シートが選択されていません!", vbExclamation

End If

End Sub

📌ユーザーが入力したシートだけを印刷!
📌手動で選択する手間を省ける!


まとめ

機能VBAコード
みんなのシートを印刷Sheets.PrintOut
特定のシートを印刷Sheets(Array("Sheet1", "Sheet2")).PrintOut
シートを1枚ずつ印刷For Each ws In Sheets: ws.PrintOut: Next ws
プレビューを表示Sheets.PrintPreview
印刷範囲.PageSetup.PrintArea = "$A$1:$D$20"
データ範囲を自動設定lastRowlastColモデル設定
1 ページに入る.FitToPagesWide = 1, .FitToPagesTall = 1
両面印刷Duplex:=True
ユーザーが選択したシートを印刷InputBox見る
おすすめの活用方法

複数シートをまとめて印刷すると、作業効率がアップ!
不要なページを省くなら、PrintAreaを活用!
印刷前にPrintPreview確認するとミスが見つかる!
ユーザーがシートを選択する機能も便利!

    -VBAで自動化, VBA一覧, ファイル・印刷操作, 印刷設定