Excelで印刷用の資料を作成する際、「ここで1ページに分けたい」と感じた経験はないでしょうか。ページ数が多くなると、改ページを手動で設定する作業はとても手間がかかります。
VBAを使えば、この改ページ挿入を自動で行うことができます。
「一定行ごとに改ページを入れるマクロ」の作り方と、その活用ポイントを紹介します。
一定行ごとに改ページを入れるマクロ
たとえば「50行ごとに改ページを入れたい」といった場合、次のようなマクロが使えます。
' 50行ごとに改ページを設定するマクロ
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 既存の改ページをすべてクリア
ActiveSheet.ResetAllPageBreaks
' 改ページを挿入
For i = 51 To lastRow Step 50
ActiveSheet.HPageBreaks.Add Before:=Rows(i)
Next
このマクロでは、A列の最終行までの範囲を対象にして、51行目、101行目、151行目… のように、ページの境界を自動的に設定します。
なお、改ページを入れる前に ResetAllPageBreaks で既存の改ページをクリアしているため、何度実行しても重複や混乱は発生しません。
実装するメリット
このように改ページを自動化することで、以下のようなメリットが得られます。
- 印刷時のページ構成をコントロールできる
- 手動での調整作業が不要になる
- 見やすい紙資料をすばやく用意できる
- 毎回同じ形式で印刷できるため、業務の再現性が上がる
特に、毎月のレポートや明細一覧を印刷する業務では、「毎回同じ位置で区切って印刷したい」というニーズが多くあります。VBAで改ページを固定化することで、担当者による仕上がりのばらつきがなくなります。
改ページ位置を条件で制御する例
行数ではなく、特定の値をもとに改ページを入れることも可能です。たとえば、列Aに記載された「部門名」が変わるたびにページを切り替えたい場合は、次のような書き方になります。
' 部門が変わるたびに改ページを入れるマクロ
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.ResetAllPageBreaks
For i = 2 To lastRow
If Cells(i, 1).Value <> Cells(i - 1, 1).Value Then
ActiveSheet.HPageBreaks.Add Before:=Rows(i)
End If
Next
このようにすれば、印刷物の区切り方をロジックに応じて自動化することができます。ページの切り方がデータ構造に依存する場合に非常に有効です。
まとめ
改ページの手動設定は、印刷準備の中でも意外と時間がかかる作業です。VBAを使えば、その手間を大きく減らすことができます。
ポイントをまとめると、次のとおりです。
- VBAを使えば改ページを自動で挿入できる
- 行数単位でも、条件に応じた改ページも可能
- 毎回同じ形式での印刷や、ページ単位の資料提出に向いている
Excelで印刷までを含めた業務を担っている方にとって、改ページの自動化は大きな効率化ポイントです。まずは「50行ごと」のようなシンプルな処理から、導入してみてください。


