なぜ印刷範囲の解除が重要なのか
実務でExcelを扱っていると、「印刷すると一部しか出力されない」「余計な空白ページが混ざる」といったトラブルに遭遇したことはありませんか?その原因の多くは、過去に設定された「印刷範囲」が残っていることにあります。一度設定した印刷範囲は、シートを更新しても自動では消えません。この「見えない制約」を適切に解除することは、資料作成の仕上げにおいて非常に重要なスキルです。
基礎知識:印刷範囲の仕組み
Excelの「印刷範囲」とは、シート全体の中で「ここだけを印刷する」と指定する機能です。一度設定されると、Excelはその範囲外を印刷対象から除外します。
VBAを扱う際も、この一般機能の仕様を理解しておくことは必須です。なぜなら、マクロで帳票を出力する際、前回の印刷範囲設定が残っていると、意図しないレイアウト崩れを引き起こす可能性があるからです。
実装・解決策
印刷範囲を解除するには、リボンメニューの[ページレイアウト]タブにある[印刷範囲]ボタンから[印刷範囲のクリア]を選択します。しかし、何十枚ものシートを扱う業務では、手動での操作は非効率です。
そこで、VBAを使って「アクティブシートの印刷範囲を強制的にリセットする」手法を身につけておきましょう。これにより、マクロによる自動帳票作成時に、常にクリーンな状態で印刷を実行できるようになります。
サンプルプログラム
以下のコードは、現在選択しているシートの印刷範囲をクリアするための汎用的なマクロです。標準モジュールに貼り付けてお使いください。
Sub ClearPrintArea_AllSheets()
‘ 念のため、現在のアクティブシートの印刷範囲を解除する
‘ PageSetupオブジェクトのPrintAreaプロパティを空文字にすることで解除されます
ActiveSheet.PageSetup.PrintArea = “”
MsgBox “現在のシートの印刷範囲を解除しました。”, vbInformation
End Sub
‘ 応用:ブック内の全シートの印刷範囲を一括解除する場合
Sub ClearPrintArea_EntireWorkbook()
Dim ws As Worksheet
‘ ブック内のすべてのシートをループ処理
For Each ws In ThisWorkbook.Worksheets
ws.PageSetup.PrintArea = “”
Next ws
MsgBox “ブック内のすべてのシートの印刷範囲を解除しました。”, vbInformation
End Sub
応用・注意点
実務で活用する際の注意点は以下の3点です。
1. PrintAreaへの代入: VBAにおいて印刷範囲の設定解除は、プロパティに「””(空文字)」を代入することで行います。Nothingを代入しようとするとエラーになるため注意してください。
2. マクロ実行のタイミング: 帳票出力用のマクロを作成する際は、処理の冒頭で「印刷範囲のクリア」を記述しておくのが定石です。これにより、ユーザー側で誤って印刷範囲が設定されていても、マクロが正しく動作します。
3. 隠しシートへの配慮: 全シートを一括解除する場合、非表示シートが含まれているとエラーになることがあります。必要に応じて「If ws.Visible = xlSheetVisible Then」といった条件分岐を加えると、より堅牢なプログラムになります。
印刷範囲の管理は地味ですが、資料の正確性を担保するための第一歩です。ぜひ、日々の業務自動化に組み込んでみてください。
