皆さん、こんにちは。現場で使えるVBAの極意をお伝えする講師です。
日々の業務で「作成した帳票を印刷したら、意図しない場所で改ページされていた」「毎回同じヘッダーや余白を設定するのが面倒」といった経験はありませんか?
今回は、手作業によるミスをゼロにし、印刷業務を劇的に効率化するVBAのテクニックを解説します。
なぜ「ページ設定」をVBAで制御すべきなのか
実務の現場では、同じフォーマットでもデータ量によって行数が変動することが多々あります。そのたびに「改ページプレビュー」を開いて調整するのは非生産的です。
VBAでPageSetupオブジェクトを制御すれば、どんなデータ量であっても、常に「A4・横・1枚に収める」といった最適な出力を一瞬で保証できます。
即効テクニック:全シート一括設定の定石
複数のシートを扱う場合、個別に設定を変えるのは非効率です。以下のコードは、ブック内の全シートに対して「A4・横・中央配置」を強制適用する実務向けのひな形です。
Sub ApplyPrintSettings()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
With ws.PageSetup
.PaperSize = xlPaperA4
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False ‘高さは自動調整
.CenterHorizontally = True
End With
Next ws
MsgBox “全シートの印刷設定を最適化しました。”
End Sub
現場で役立つ「罠」を避けるコツ
ここで一つ、ベテランからの注意点です。
多くのエンジニアが陥る罠として、`.Zoom = False` を記述せずに `.FitToPagesWide` を設定しようとしてエラーになるケースがあります。
VBAにおいて、拡大縮小率が固定されていると「ページに合わせる」プロパティは無視される仕様になっているのです。必ず「Zoom = False」を先に記述する、これがトラブルを防ぐ鉄則です。
応用編:動的なヘッダー設定
さらに一歩進んだテクニックとして、ヘッダーに「作成日」や「担当者名」を自動挿入する方法があります。
`.LeftHeader = “作成日: ” & Format(Date, “yyyy/mm/dd”)` のように記述することで、印刷した瞬間の日付を自動印字できます。これにより「いつ出力した資料か分からない」というヒューマンエラーを物理的に排除できるのです。
まとめ
印刷設定の自動化は、単なる時短テクニックではありません。「誰が印刷しても同じ品質で出力される」という、組織としての標準化を実現するための重要なプロセスです。
まずは今回紹介したコードを、皆さんの業務ファイルに組み込んでみてください。面倒なクリック操作から解放される快感を、ぜひ体験していただきたいと思います。
