【VBAリファレンス|実務向け】特定のページだけを印刷プレビューする|PrintOutメソッドの活用術

スポンサーリンク

導入: なぜPrintOutメソッドが必要なのか

実務でExcelの大量のデータを印刷する際、「全ページではなく、特定のページだけを確認したい」という場面はよくあります。通常、VBAでプレビューを表示する際は「PrintPreviewメソッド」を使いますが、これには「ページ範囲を指定できない」という大きな弱点があります。全ページが何百枚もある帳票の場合、確認したいページまでスクロールするのは時間の無駄です。今回は、PrintOutメソッドを活用して、特定のページ範囲だけをピンポイントでプレビュー表示するテクニックを解説します。

基礎知識: PrintOutメソッドの仕組み

PrintOutメソッドは、本来「印刷を実行するためのメソッド」です。しかし、引数に特定のパラメータを渡すことで、印刷を実行せずに「印刷プレビュー画面」を呼び出すことが可能になります。

重要となる引数は以下の3つです。
・From: 印刷(プレビュー)を開始するページ番号
・To: 印刷(プレビュー)を終了するページ番号
・Preview: Trueに設定することで、印刷を実行せずにプレビュー画面を開く

実装/解決策: 特定範囲のプレビュー表示

このテクニックのポイントは、Preview引数をTrueに設定することです。これにより、実際のプリンタから用紙が出てくることを防ぎ、画面上でページ構成を確認できます。実務では、ユーザーが入力した開始ページと終了ページを変数として受け取り、動的にプレビューさせることで、利便性が飛躍的に向上します。

サンプルプログラム: ページ範囲を指定してプレビューする

以下のコードは、アクティブなシートの「2ページ目から3ページ目まで」をプレビューする例です。

Sub PreviewSpecificPages()
‘ エラー回避のため、対象シートが印刷可能か確認することをお勧めします
On Error Resume Next

‘ From:開始ページ, To:終了ページ, Preview:=Trueでプレビューモードを起動
ActiveSheet.PrintOut From:=2, To:=3, Preview:=True

If Err.Number <> 0 Then
MsgBox “指定したページ範囲に誤りがあるか、印刷対象がありません。”, vbExclamation
End If
On Error GoTo 0
End Sub

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

1. ページ番号の誤指定に注意
もしドキュメント全体のページ数よりも大きい値をTo引数に指定すると、エラーが発生したり、プレビューが正しく動作しない場合があります。実務で利用する際は、事前に「ExecuteExcel4Macro(“GET.DOCUMENT(50)”)」等を使って、シート全体の総ページ数を取得し、範囲チェックを行うとより堅牢なプログラムになります。

2. 改ページ設定の確認
PrintOutメソッドによるプレビューは、あくまで現在の「改ページ設定」に基づきます。プレビューを見て「ページ割りがおかしい」と感じた場合は、先にVBAで「HPageBreaks」や「VPageBreaks」を操作して改ページ位置を調整しておく必要があります。

3. PrintPreviewメソッドとの使い分け
全ページを確認したい場合や、印刷範囲が非常に短い場合は、従来通り「ActiveSheet.PrintPreview」を使用する方がシンプルで動作も軽快です。用途に応じて使い分けるのが「プロの技」と言えるでしょう。

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