【VBAリファレンス|実務向け】第18回 VBAマクロで印刷プレビューを操作する 2/4:マクロ記録を活用した「ページ設定」の自動化

スポンサーリンク

導入:なぜ印刷設定の自動化が重要なのか

実務において、定型レポートの印刷は避けて通れない業務です。しかし、毎回手動で「用紙サイズ」や「拡大縮小倍率」を設定するのは手間ですし、操作ミスによる印刷レイアウトの崩れも懸念されます。
VBAを活用して印刷設定を自動化すれば、ワンクリックで常に「正しいレイアウト」でプレビュー・印刷が可能になります。今回は、VBA初心者の方でも確実にコードを作成できる「マクロ記録」を活用したアプローチを解説します。

基礎知識:PageSetupオブジェクトとは

Excel VBAで印刷の設定を制御するためには、PageSetupオブジェクトを使用します。これは、ワークシートの「ページ設定」ダイアログボックスで行うすべての項目(用紙サイズ、余白、ヘッダー・フッター、拡大縮小など)をプログラムから操作するためのものです。
今回は、マクロ記録機能を使って、この複雑な設定項目を自動的にコードへ書き出させる方法を学びます。

実装:マクロ記録で「雛形」を作る

マクロ記録は、手作業で行った操作をVBAコードに変換してくれる非常に強力なツールです。以下の手順で記録を行います。

1. [開発]タブから[マクロの記録]を開始します。
2. [ページレイアウト]タブの「ページ設定」ダイアログボックスを開きます。
3. 用紙サイズや拡大縮小率を指定し、プレビュー画面を開いて閉じます。
4. [記録終了]ボタンを押します。

この操作を行うだけで、VBAエディタ上にPageSetupに関連するコードが自動生成されます。

サンプルプログラム:ページ設定を自動化するコード

記録されたコードは冗長な場合が多いため、実務向けに整理したサンプルを紹介します。以下のコードを標準モジュールに貼り付けてみてください。

Sub SetPrintLayout()
‘ 対象となるシートを指定
With ActiveSheet.PageSetup
‘ 用紙サイズをA4に設定
.PaperSize = xlPaperA4

‘ 拡大縮小率を114%に設定
.Zoom = 114

‘ 印刷の向きを縦に設定(横ならxlLandscape)
.Orientation = xlPortrait

‘ 上下左右の余白を調整
.TopMargin = Application.InchesToPoints(0.5)
.BottomMargin = Application.InchesToPoints(0.5)
End With

‘ 印刷プレビューを表示して確認を促す
ActiveSheet.PrintPreview
End Sub

応用・注意点:現場でのトラブル回避

1. 記録されたコードの整理
マクロ記録で生成されるコードには、設定を変更していない項目まで含まれることがあります。実務では、必要なプロパティだけを抽出し、上記のようにWithステートメントでスッキリとまとめるのが「読みやすいコード」の基本です。

2. ページ設定の罠に注意
PageSetupの設定は「プリンタドライバ」に依存する場合があります。環境が変わると用紙サイズが正しく反映されないことがあるため、プログラムの冒頭で必ず「用紙サイズ」や「印刷の向き」を明示的に指定する癖をつけましょう。

3. プレビュー後の制御
PrintPreviewメソッドは、プレビュー画面を閉じるまでプログラムの実行を停止させます。もしプレビュー後に続けて別の処理(PDF出力やメール送信など)を行いたい場合は、この特性を考慮してコードを記述してください。

次回は、今回記録したコードをどのように汎用的に改良していくかを解説します。まずは「動くコード」を作る第一歩として、この手順を試してみてください。

タイトルとURLをコピーしました