Excel VBAを使うと、シートの印刷設定を自動化できます。
例えば、特定の範囲だけを印刷する、用紙サイズを設定する、モノクロ印刷を指定する、ヘッダーやフッターを設定するなど、さまざまな制御が可能です。
この記事では、Excel VBA での印刷設定の基本から応用テクニックまで解説します。
目次
基本的な印刷メソッド
Excel VBAで印刷する場合は、PrintOut
メソッドを使用します。
✅PrintOutの基本構文
Worksheet.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)
引数 | 説明 | 省略時の値 |
---|---|---|
From | 開始ページ番号 | の |
To | 終了番号 | の |
Copies | 印刷部数 | 1 |
Preview | True にすると印刷プレビューを表示 | False |
ActivePrinter | 使用するプリンターの名前 | インタープリンター |
PrintToFile | True にするとファイルとして出力 | False |
Collate | True で単位に印刷 | True |
PrToFileName | PrintToFile=True のときの保存ファイル名 | なし |
✅ シート裏面印刷
Sub PrintSheet()
ActiveSheet.PrintOut
End Sub
📌シート全体をデフォルトのプリンターで印刷!
✅指定ページだけ印刷
Sub PrintSpecificPages()
ActiveSheet.PrintOut From:=1, To:=2
End Sub
📌 1~2ページだけを印刷!
✅ 印刷プレビューを表示
Sub PrintPreview()
ActiveSheet.PrintOut Preview:=True
End Sub
📌実際に印刷せずに、プレビューを確認!
印刷範囲の設定
シートの特定の範囲だけを印刷するには、PrintArea
プロパティを使います。
✅ 印刷範囲
Sub SetPrintArea()
ActiveSheet.PageSetup.PrintArea = "$A$1:$D$20"
End Sub
📌範囲セルだけA1:D20
を印刷対象に!
✅ 印刷範囲をクリア
Sub ClearPrintArea()
ActiveSheet.PageSetup.PrintArea = ""
End Sub
📌印刷範囲を解除し、シート全体を印刷対象に!
印刷設定のカスタマイズ
VBA では、PageSetup
プロパティを使って印刷設定を詳細に制御できます。
✅ 用紙サイズ
Sub SetPaperSize()
ActiveSheet.PageSetup.PaperSize = xlPaperA4
End Sub
📌 A4サイズで印刷!(その他xlPaperLetter
なども使用可能)
✅ 横向き・縦向きを設定
Sub SetOrientation()
ActiveSheet.PageSetup.Orientation = xlPortrait ' 縦向き
' ActiveSheet.PageSetup.Orientation = xlLandscape ' 横向き
End Sub
📌縦向き(xlPortrait
)か横向き(xlLandscape
)を選択!
✅ヘッダーとフッターを設定
Sub SetHeaderFooter()
With ActiveSheet.PageSetup
.CenterHeader = "会社名"
.RightHeader = "ページ &[Page] / &[Pages]"
.CenterFooter = "作成日: &[Date]"
End With
End Sub
📌ヘッダーやフッターに情報を追加!([Page]
はページ番号、[Date]
は作成日)
✅ 余白を調整
Sub SetMargins()
With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.5)
.RightMargin = Application.InchesToPoints(0.5)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(0.75)
End With
End Sub
📌InchesToPoints()
でインチ単位をポイントに変換!
印刷オプションの設定
✅ モノクロ印刷を設定
Sub SetBlackAndWhite()
ActiveSheet.PageSetup.BlackAndWhite = True
End Sub
📌印刷カラーを強制的にモノクロに!
✅ グリッド線を印刷
Sub PrintGridlines()
ActiveSheet.PageSetup.PrintGridlines = True
End Sub
📌シートのグリッド線を印刷!
✅ 行列番号を印刷
Sub PrintHeadings()
ActiveSheet.PageSetup.PrintHeadings = True
End Sub
📌行番号や列番号を印刷!
プリンターの設定
✅デフォルトのプリンターを取得
Sub GetActivePrinter()
Debug.Print Application.ActivePrinter
End Sub
📌最新のプリンター名を取得!
✅ プリンターを変更する
Sub SetActivePrinter()
Application.ActivePrinter = "プリンター名"
End Sub
📌ネットワークプリンターを指定する場合は、正確なプリンターパスが必要です!
印刷の自動化(実践例)
以下のコードは、「特定の範囲をA4サイズで横向き、プレビュー表示後に印刷する」というトレイルを自動化する例です。
✅ 印刷自動化のコード
Sub AutoPrint()
With ActiveSheet.PageSetup
.PrintArea = "$A$1:$F$30" ' 印刷範囲
.PaperSize = xlPaperA4 ' A4サイズ
.Orientation = xlLandscape ' 横向き
.Zoom = False
.FitToPagesWide = 1 ' 横1ページに収める
.FitToPagesTall = 1 ' 縦1ページに収める
End With
ActiveSheet.PrintOut Preview:=True ' プレビュー表示後に印刷
End Sub
📌 「A1 :F30 」を1ページにて行ってプレビュー表示!
まとめ
設定項目 | 使用するプロパティ・メソッド |
---|---|
シート裏面印刷 | ActiveSheet.PrintOut |
特定の範囲を印刷する | .PrintArea = "$A$1:$D$20" |
用紙サイズ | .PaperSize = xlPaperA4 |
縦向き・横向き | .Orientation = xlPortrait または.Orientation = xlLandscape |
ヘッダー・フッター | .CenterHeader = "会社名" |
モノクロ印刷 | .BlackAndWhite = True |
グリッド線印刷 | .PrintGridlines = True |
プリンターの変更 | Application.ActivePrinter = "プリンター名" |