【Excelマクロ】改ページを自動で挿入するマクロの作り方

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行ごと」のようなシンプルな処理から、導入してみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール