導入:なぜ「中央揃え」の設定を自動化する必要があるのか
ビジネスの現場において、作成した資料を印刷する際、表やグラフが用紙の左上に寄ってしまうと、見栄えが悪くプロフェッショナルな印象を与えられません。手作業で「ページレイアウト」から設定することも可能ですが、毎日のルーチン作業や、複数のシートを扱う業務において、この設定を手動で行うのは効率が悪く、設定漏れの原因にもなります。今回は、VBAを使って印刷時の配置を自動的に中央揃えにする方法を解説します。
基礎知識:PageSetupオブジェクトの仕組み
Excel VBAで印刷設定を操作するには、PageSetupオブジェクトを使用します。これは、ワークシートの「ページ設定」ダイアログボックスで指定できる項目(余白、ヘッダー、フッター、印刷範囲など)をコードで制御するためのものです。今回使用する「水平・垂直方向の中央揃え」は、PageSetupのプロパティである「CenterHorizontally(水平)」と「CenterVertically(垂直)」をTrueに設定することで実現します。
実装:VBAによる中央揃えの実行手順
VBAで設定を行う際は、対象となるシートを指定した上で、PageSetupプロパティの該当項目に値を代入します。論理的な手順としては、「対象シートを選択 → PageSetupの各プロパティをTrueにする」という非常にシンプルな構成になります。
サンプルプログラム:指定シートを中央揃えにするコード
以下のコードを標準モジュールにコピーして実行してください。アクティブなシートを用紙の中央に配置する設定に変更します。
Sub SetPrintCenter()
‘ 対象となるシートを変数にセット
Dim ws As Worksheet
Set ws = ActiveSheet
‘ ページ設定オブジェクトを操作
With ws.PageSetup
‘ 水平方向(左右)を中央にする
.CenterHorizontally = True
‘ 垂直方向(上下)を中央にする
.CenterVertically = True
End With
‘ 設定完了を通知
MsgBox “アクティブシートを印刷時に用紙中央へ配置する設定にしました。”, vbInformation
End Sub
応用・注意点:現場で役立つテクニック
1. 印刷プレビューで確認する
プログラムを実行した後は、必ず「印刷プレビュー(Ctrl + P)」で結果を確認してください。特に、データ量が多い場合や、印刷範囲が正しく設定されていないと、中央揃えにしても意図した通りに見えないことがあります。
2. 全シートへ一括適用する
特定の1枚だけでなく、ブック内のすべてのシートを一括で設定したい場合は、For Eachループを使用して以下のように記述すると非常に効率的です。
Sub SetAllSheetsCenter()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.PageSetup.CenterHorizontally = True
ws.PageSetup.CenterVertically = True
Next ws
MsgBox “すべてのシートの設定が完了しました。”
End Sub
3. 注意点:プリンタの影響
PageSetupプロパティは、PCに接続されている「既定のプリンタ」のドライバー情報に依存することがあります。稀に環境によって余白の最小値が異なる場合があるため、完璧に中央を狙いたい場合は、余白設定(LeftMarginなど)と併用して調整することをおすすめします。
