【VBAリファレンス|実務向け】[VBA実務テクニック] 印刷トラブルを未然に防ぐ!VBAによるプレビュー表示の自動化

スポンサーリンク

1. 導入:なぜ印刷プレビューをコードで制御する必要があるのか

実務において、作成した帳票を印刷する際「意図しないレイアウトで印刷されてしまった」「一部のセルがハミ出している」といったトラブルに遭遇したことはありませんか?
手動で印刷プレビューを確認するのも一つの手段ですが、VBAで印刷処理を自動化している場合、ユーザーが印刷ボタンを押した瞬間に「プレビューを表示して確認させる」というワンクッションを挟むことで、無駄な紙の消費や出力ミスを劇的に減らすことができます。本日は、VBAを使って印刷プレビューを呼び出すスマートな方法を解説します。

2. 基礎知識:PrintPreviewメソッドとは

VBAには、ワークシートやグラフシートを印刷する前に、画面上で確認するための「PrintPreviewメソッド」が用意されています。これを使用することで、Excel標準の印刷プレビュー画面を強制的に表示させることができます。

PrintPreviewメソッドは、印刷を実行するPrintOutメソッドと異なり、ユーザーの目視確認を挟むことができるため、印刷直前の「最後の砦」として非常に強力です。

3. 実装/解決策:PrintPreviewメソッドの活用

実装は非常にシンプルです。対象となるシートを指定し、そのオブジェクトに対して「.PrintPreview」を実行するだけです。
実務上のポイントとして、「プレビュー画面でユーザーが[戻る]ボタンを押した場合」と、「印刷を実行した場合」を切り分ける必要はありませんが、プレビューを挟むことで「本当に印刷して良いか」をユーザーに判断させることができます。

4. サンプルプログラム

以下のコードを標準モジュールにコピーして、実際の業務シートで試してみてください。

Sub ShowPrintPreview()
‘ 画面更新を停止して処理を高速化
Application.ScreenUpdating = False

‘ アクティブなシートをプレビュー表示する
‘ もし特定のシートを指定したい場合は、Worksheets(“シート名”).PrintPreview と記述します
ActiveSheet.PrintPreview

‘ プレビュー終了後のフィードバック(任意)
MsgBox “プレビュー確認が完了しました。”, vbInformation

Application.ScreenUpdating = True
End Sub

5. 応用・注意点:現場で役立つ補足

・設定がそのまま反映される点に注意
参考本文にもある通り、プレビュー画面で余白や列幅を調整した場合、その変更はワークシート自体に適用されます。VBAでプレビューを表示させる際は、ユーザーが意図せずレイアウトを変更してしまう可能性があることを考慮してください。

・ページ設定の自動化を併用する
プレビューを表示させる前に、あらかじめVBAで「改ページ位置」や「余白」「印刷の向き」を固定しておくと、よりミスが少なくなります。
例えば、以下のように記述することで、プレビュー前に強制的に横向き設定にできます。

With ActiveSheet.PageSetup
.Orientation = xlLandscape ‘ 横向きに設定
.Zoom = False ‘ 拡大縮小を自動調整に
.FitToPagesWide = 1 ‘ 横幅を1ページに収める
.FitToPagesTall = False ‘ 縦は自動
End With
ActiveSheet.PrintPreview

・エラー回避
もし印刷対象のシートが保護されている場合、ユーザーがプレビュー画面で設定を変更できなくなることがあります。業務に合わせて「シート保護」との組み合わせも検討してみてください。

このように、VBAでプレビューを制御する習慣をつけるだけで、社内からの「印刷ミスした!」という相談は大幅に減るはずです。ぜひ実務に取り入れてみてください。

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