Excelのシートを印刷する際、分析やレビューのために「A, B, C…」といった列番号や「1, 2, 3…」の行番号、またセルの区切りを示す薄い灰色の枠線(グリッド線)も一緒に印刷したい、という場合があります。
これらの設定は通常、「ページレイアウト」タブから行いますが、VBAを使えばこの設定を自動化し、いつでも同じ形式で印刷することが可能です。この記事では、PageSetup
オブジェクトを操作して、これらの項目を印刷対象に含める方法を解説します。
PageSetupオブジェクトとは?
Excelの各ワークシートは、PageSetup
というオブジェクトを持っています。このオブジェクトには、余白、印刷の向き、拡大縮小率、ヘッダー/フッターなど、印刷に関するあらゆる設定がプロパティとして格納されています。VBAからこのオブジェクトの値を変更することで、印刷設定を自由にコントロールできます。
完成したVBAコード
以下が、行・列番号と枠線を印刷する設定を行い、印刷プレビューを表示するVBAコードです。
Sub PrintSheetWithHeadersAndGridlines()
' 変数を宣言します
Dim targetSheet As Worksheet
' 現在アクティブなシートを操作対象に設定
Set targetSheet = ActiveSheet
' PageSetupオブジェクトの設定を変更します
With targetSheet.PageSetup
' 「行列番号」の印刷を有効にする
.PrintHeadings = True
' 「枠線」の印刷を有効にする
.PrintGridlines = True
End With
' 設定を反映した状態で「印刷プレビュー」を表示します
targetSheet.PrintPreview
' 実際にプリンターから印刷する場合は、下の行を実行します
' targetSheet.PrintOut
End Sub
コードのポイント解説
① 行・列番号の印刷 (.PrintHeadings)
.PrintHeadings = True
PageSetup
オブジェクトのPrintHeadings
プロパティをTrue
に設定すると、印刷時にシートの行番号(1, 2, 3…)と列番号(A, B, C…)が含まれるようになります。これは、ページ設定ダイアログの「シート」タブにある「行列番号」のチェックボックスをオンにするのと同じ操作です。
② 枠線の印刷 (.PrintGridlines)
.PrintGridlines = True
同様に、PrintGridlines
プロパティをTrue
にすると、**セルの区切りを示す薄い灰色の枠線(グリッド線)**が印刷されます。太線などの「罫線」とは異なり、あくまで画面上で表示されている補助的な線が対象です。これも、「枠線」のチェックボックスをオンにする操作に相当します。
③ 印刷の実行 (.PrintPreview / .PrintOut)
targetSheet.PrintPreview
' targetSheet.PrintOut
設定を変更した後、.PrintPreview
メソッドを実行すると、設定が反映された印刷プレビュー画面が表示され、意図通りになっているかを確認できます。
実際にプリンターから出力したい場合は、.PrintOut
メソッドを使用します。.PrintOut Copies:=2
のように引数を指定すれば、印刷部数をコントロールすることも可能です。
まとめ
Excelの印刷設定をVBAで操作する際の基本は、PageSetup
オブジェクトにあります。
- 行・列番号を印刷したい:
ActiveSheet.PageSetup.PrintHeadings = True
- 枠線(グリッド線)を印刷したい:
ActiveSheet.PageSetup.PrintGridlines = True
これらの設定をマクロに組み込んでおくことで、手作業による設定ミスを防ぎ、いつでも誰でも同じフォーマットで印刷できるようになります。定型的な帳票の印刷処理などを自動化する際に、非常に役立つテクニックです。