Excelで印刷する前に、レイアウトを確認しておきたいことがよくあります。
VBAを使うと、ワンクリックで印刷プレビューを表示し、内容をチェックすることが可能です。
この記事では、Excel VBAを使って印刷プレビューを表示する方法や、便利な応用テクニックについて解説します。
目次
基本的な印刷プレビューの表示方法
✅PrintPreviewメソッドの基本
PrintPreviewメソッドを使用すると、最新のシートや指定範囲の印刷プレビューを表示できます。
ActiveSheet.PrintPreview
📌このコードを実行すると、アクティブなシートの印刷プレビューが開きます!
📌印刷する前にレイアウトを確認できるので、誤った印刷を防ぐことができます!
✅ シート全体の印刷プレビュー
Sub ShowPrintPreview()
ActiveSheet.PrintPreview
End Sub
📌アクティブなシートの印刷プレビューを表示!
✅ 印刷プレビューを閉じずに継続
通常、PrintPreviewは閉じて VBA の実行が行われます。
以下のようにEnableCancelKey使うと、ユーザーが閉じても処理を継続できます。
Sub ShowPrintPreviewWithoutInterrupt()
Application.EnableCancelKey = xlDisabled
ActiveSheet.PrintPreview
Application.EnableCancelKey = xlInterrupt
End Sub
📌プレビューを閉じてもスムーズに次の処理を実行可能!
特定の範囲のみをプレビュー
印刷範囲を指定してからプレビューを表示すると、必要な部分だけをプレビュー可能です!
✅ 指定範囲を印刷プレビュー
Sub ShowPrintPreviewWithRange()
ActiveSheet.PageSetup.PrintArea = "$A$1:$D$20"
ActiveSheet.PrintPreview
End Sub
📌A1:D20だけを印刷プレビュー!
✅選択した範囲をプレビュー
Sub ShowPrintPreviewFromSelection()
If Not Selection Is Nothing Then
ActiveSheet.PageSetup.PrintArea = Selection.Address
ActiveSheet.PrintPreview
Else
MsgBox "範囲を選択してください!", vbExclamation
End If
End Sub
📌ユーザーが選択した範囲をプレビュー! 📌
範囲が選択されていない場合はメッセージを表示!
複数シートの印刷プレビュー
✅ ブック内のすべてのシートをプレビュー
Sub ShowPrintPreviewAllSheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.PrintPreview
Next ws
End Sub
📌全シートの印刷プレビューを順番に表示! 📌
各シートのレイアウトを確認するのに便利!
✅ 特定のシートだけプレビュー
Sub ShowPrintPreviewSpecificSheets()
Sheets(Array("Sheet1", "Sheet2")).PrintPreview
End Sub
📌Sheet1とだけSheet2をプレビュー!
印刷プレビューのカスタマイズ
✅ 横向き・縦向きを設定
Sub ShowPrintPreviewWithOrientation()
With ActiveSheet.PageSetup
.Orientation = xlLandscape ' 横向き
End With
ActiveSheet.PrintPreview
End Sub
📌横向き(xlLandscape)に設定してプレビュー!
✅ 1 ページにまとめてプレビュー
Sub ShowPrintPreviewFitToOnePage()
With ActiveSheet.PageSetup
.Zoom = False ' 自動調整を有効化
.FitToPagesWide = 1 ' 横1ページ
.FitToPagesTall = 1 ' 縦1ページ
End With
ActiveSheet.PrintPreview
End Sub
📌データを1ページにまとめてプレビュー!
📌長いレポートや表の印刷便利!
【VBA】印刷時に 1 ページにまとめる方法と応用テクニック
✅ヘッダー・フッターを設定
Sub ShowPrintPreviewWithHeaderFooter()
With ActiveSheet.PageSetup
.CenterHeader = "会社名"
.RightHeader = "ページ &[Page] / &[Pages]"
.CenterFooter = "作成日: &[Date]"
End With
ActiveSheet.PrintPreview
End Sub
📌ヘッダーに「会社名」、フッターに「作成日」を追加してプレビュー!
印刷プレビューボタンを作成
ボタンをクリックして印刷プレビューを実行すると、より便利に!
✅ 印刷プレビューボタンの作成手順
- Excelの「開発」タブを開く
- 「開発」タブがない場合 →
ファイル→オプション→リボンのユーザー設定で「開発」にチェック
- 「開発」タブがない場合 →
- 「挿入」→「フォームコントロール」→「ボタン」を選択
- ワークシート上にボタンを配置
- 「マクロの登録」ウィンドウで、以下のVBAコードを登録
Sub PrintPreviewButton()
ActiveSheet.PrintPreview
End Sub
📌ボタンをクリックするだけでプレビューが開きます!
ユーザー選択型の印刷プレビュー
✅ ユーザーがシート選択
Sub ShowPrintPreviewForSelectedSheet()
Dim wsName As String
wsName = InputBox("プレビューを表示するシート名を入力してください:", "印刷プレビュー")
If wsName <> "" Then
On Error Resume Next
Sheets(wsName).PrintPreview
If Err.Number <> 0 Then
MsgBox "シートが見つかりません!", vbExclamation
End If
On Error GoTo 0
Else
MsgBox "キャンセルされました。", vbInformation
End If
End Sub
📌ユーザーが指定したシートの印刷プレビューを表示! 📌
シートが存在しない場合はエラーメッセージを表示!
まとめ
| 機能 | VBAコード |
|---|---|
| シート全体をプレビュー | ActiveSheet.PrintPreview |
| 特定範囲のみプレビュー | .PageSetup.PrintArea = "$A$1:$D$20" |
| 選択範囲をプレビュー | Selection.AddressをPrintArea設定した |
| 全シートを順番にプレビュー | For Each ws In Sheets: ws.PrintPreview: Next ws |
| 特定のシートのみプレビュー | Sheets(Array("Sheet1", "Sheet2")).PrintPreview |
| 1ページにまとめてプレビュー | .FitToPagesWide = 1, .FitToPagesTall = 1 |
| ヘッダー・フッターを追加 | .CenterHeaderや.CenterFooter |
| ユーザー指定のシートをプレビュー | InputBoxでシートを選択 |
おすすめの活用方法
✅印刷プレビューを活用すれば、誤った印刷を防げる!
✅ 「選択範囲だけプレビュー」や「複数シートを一括プレビュー」も便利!
✅ボタンを作成すれば、ワンクリックでプレビューを実行可能!