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

【VBA】印刷範囲を設定・調整する方法と活用例

Excel で印刷する際、必要な範囲だけを印刷したいという場面はよくあります。
VBA が使えれば、特定のセル範囲を自動で印刷範囲として設定したり、動的に変更することが可能です

この記事では、Excel VBAでの印刷範囲の設定方法や、便利な応用テクニックを解説します。

印刷範囲を設定する(PrintArea)

PrintAreaプロパティの基本

印刷範囲はPageSetup.PrintArea使って設定します。

ActiveSheet.PageSetup.PrintArea = "A1:D20"

📌このコードを実行すると、A1:D20の範囲だけが印刷対象になります!

✅ 印刷範囲をVBAで設定

Sub SetPrintArea()

ActiveSheet.PageSetup.PrintArea = "$A$1:$D$20"

End Sub

📌絶対参照($A$1:$D$20)を指定して、範囲を固定!
📌マクロ実行後、Ctrl + P(印刷)を押すと設定が適用されている!

✅ 印刷範囲をクリア(全シート)

Sub ClearPrintArea()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Sheets

ws.PageSetup.PrintArea = ""

Next ws

End Sub

📌全シートの印刷範囲をリセット!

【VBA】印刷設定の方法と活用例

動的に印刷範囲を設定

データが追加される場合、最後の行や列を考慮して印刷範囲を動的に設定すると便利です。

✅ データがある範囲を自動設定

Sub SetDynamicPrintArea()

Dim lastRow As Long, lastCol As Long
Dim printRange As String

With ActiveSheet

lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
printRange = "$A$1:" & Cells(lastRow, lastCol).Address
.PageSetup.PrintArea = printRange

End With

End Sub

📌データの最終行・最終列を自動検出し、印刷範囲を設定!
📌データの追加・削除に対応可能!

✅選択範囲を印刷範囲に設定

Sub SetPrintAreaFromSelection()

If Not Selection Is Nothing Then

ActiveSheet.PageSetup.PrintArea = Selection.Address

Else

MsgBox "範囲を選択してください!", vbExclamation

End If

End Sub

📌ユーザーが選択した範囲を印刷範囲として設定!
📌範囲を選択せず​​に実行すると、メッセージを表示します!

【VBA】印刷時に 1 ページにまとめる方法と応用テクニック

印刷範囲の拡張

✅ 2ページに分かれる場合に、行を自動で追加

Sub ExpandPrintArea()

Dim printRange As Range
Set printRange = ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea)

' 既存の印刷範囲 + 10行追加
ActiveSheet.PageSetup.PrintArea = printRange.Resize(printRange.Rows.Count + 10, printRange.Columns.Count).Address

End Sub

📌現在の印刷範囲を取得し、10行分拡張!

✅ 変更ページの位置を調整

Sub AdjustPageBreak()

ActiveSheet.HPageBreaks(1).Location = ActiveSheet.Range("A50")

End Sub

📌水平方向の変更ページをA50設定!
📌長いレポートを見やすく印刷可能!

印刷範囲を 1 ページにまとめる

VBA で印刷時に 1 ページに理解する設定を適用することもできます。

Sub FitToOnePage()

With ActiveSheet.PageSetup

.Zoom = False ' 自動調整を有効にする
.FitToPagesWide = 1 ' 横1ページに収める
.FitToPagesTall = 1 ' 縦1ページに収める

End With

End Sub

📌シート全体を自動縮小し、1ページにおまかせ!

印刷範囲の設定と同時に印刷

【VBA】印刷プレビューを表示する方法と活用例

✅ 印刷範囲を設定 → プレビュー

Sub SetPrintAreaAndPreview()

ActiveSheet.PageSetup.PrintArea = "$A$1:$D$20"
ActiveSheet.PrintPreview

End Sub

📌印刷範囲を設定した後、プレビューを表示!

✅ 印刷範囲を設定 → 直接印刷

Sub SetPrintAreaAndPrint()

ActiveSheet.PageSetup.PrintArea = "$A$1:$D$20"
ActiveSheet.PrintOut

End Sub

📌印刷範囲を設定し、すぐに印刷!(確認なし)

複数シートの印刷範囲を一括設定

Sub SetPrintAreaForAllSheets()

Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets

ws.PageSetup.PrintArea = "$A$1:$D$20"

Next ws

End Sub

📌すべてのシートで同じ印刷範囲を設定!


まとめ

機能VBAコード
印刷範囲ActiveSheet.PageSetup.PrintArea = "$A$1:$D$20"
印刷範囲をクリアActiveSheet.PageSetup.PrintArea = ""
データ範囲を自動設定lastRowlastColモデル設定
選択範囲を印刷範囲にSelection.Address翻訳
印刷範囲を拡張.Resize(行数, 列数)見る
印刷を 1 ページにする.FitToPagesWide = 1
ページの調整.HPageBreaks(1).Location = Range("A50")
印刷プレビューを表示ActiveSheet.PrintPreview
印刷範囲を設定後に印刷ActiveSheet.PrintOut
おすすめの活用方法

PrintAreaを使えば、特定範囲のみ印刷可能!
データの追加に対応するなら「動的に設定」がおすすめ!
印刷前にPrintPreview確認するとミスが見つかる!
「全シート一括適用」や「選択範囲を印刷」も便利!

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