当サイトの記事にはプロモーションが含まれています。

Excel VBAで印刷範囲と改ページを自在に設定する方法

パソコンパソコン・スマホ教室
スポンサーリンク

改ページの追加・均等な分け方・削除・自動改ページと手動改ページの見分け方まで、まとめて知りたい方はExcelで改ページを均等に設定する方法(総合ガイド)もあわせてご覧ください。

Excelで大量のデータを扱っていると、印刷時にページが切れてしまったり、見づらくなってしまうことがありますよね。特に、手動で改ページを設定するのは面倒です。そこで、VBA(Visual Basic for Applications)を使って、印刷範囲や改ページを自動で設定する方法をご紹介します。

スポンサーリンク

VBAで印刷範囲を設定する方法

Excelのイメージ

Excelのイメージ

まず、印刷範囲を設定する方法です。VBAでは、`PageSetup.PrintArea`を使って、印刷する範囲を指定します。

例えば、セルからD10までを印刷範囲に設定する場合、以下のように記述します。

vba
ActiveSheet.PageSetup.PrintArea = "D10"

これで、からD10までの範囲が印刷されるようになります。

VBAで改ページを設定する方法

次に、改ページを設定する方法です。改ページには、水平方向(行)と垂直方向(列)の2種類があります。

水平方向の改ページ行を基準に改ページを設定します。
垂直方向の改ページ列を基準に改ページを設定します。

### 水平方向の改ページを設定する

例えば、5行ごとに改ページを設定する場合、以下のように記述します。

vba
Sub SetHorizontalPageBreaks()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 6 To lastRow Step 5
Rows(i).PageBreak = xlPageBreakManual
Next i
End Sub

このコードでは、6行目から最終行までを5行ごとに改ページを設定しています。

### 垂直方向の改ページを設定する

例えば、3列ごとに改ページを設定する場合、以下のように記述します。

vba
Sub SetVerticalPageBreaks()
Dim i As Long
Dim lastColumn As Long
lastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 4 To lastColumn Step 3
Columns(i).PageBreak = xlPageBreakManual
Next i
End Sub

このコードでは、4列目から最終列までを3列ごとに改ページを設定しています。

VBAで改ページを解除する方法

設定した改ページを解除する方法もご紹介します。

全ての改ページを解除する

vba
ActiveSheet.ResetAllPageBreaks

特定の行の改ページを解除する

vba
Rows(6).PageBreak = xlPageBreakNone

特定の列の改ページを解除する

vba
Columns(4).PageBreak = xlPageBreakNone

これらのコードを使って、不要な改ページを簡単に解除できます。

よくある質問や疑問

Q1: 印刷範囲を動的に設定する方法はありますか?

はい、あります。例えば、データが入力されている範囲を自動で取得して印刷範囲を設定することができます。

vba
Sub SetDynamicPrintArea()
Dim lastRow As Long
Dim lastColumn As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(lastRow, lastColumn)).Address
End Sub

このコードでは、最終行と最終列を自動で取得し、その範囲を印刷範囲として設定しています。

Q2: 改ページの位置を取得する方法はありますか?

はい、あります。例えば、水平方向の改ページの位置を取得する場合、以下のように記述します。

vba
Sub GetHorizontalPageBreaks()
Dim i As Long
For i = 1 To ActiveSheet.HPageBreaks.Count
Debug.Print ActiveSheet.HPageBreaks(i).Location.Row
Next i
End Sub

このコードでは、設定されている水平方向の改ページの行番号をイミディエイトウィンドウに表示します。

まとめ

Excel VBAを使うことで、印刷範囲や改ページを自動で設定・解除することができます。これにより、大量のデータを扱う際の作業効率が大幅に向上します。ぜひ、紹介したコードを活用して、業務の効率化に役立ててください。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

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