ExcelVBA ページ数取得でExcelシートデータが印刷時に何ページか知る

 

ExcelVBA ページ数取得とは、Excelシート内のデータが印刷時に何ページ分に分割されるかを取得する機能です。これを利用すると、印刷結果を確認したり、ページ数に応じた処理を自動化したりできます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA 印刷時のページ数取得シーン

以下のようなシーンで利用で表示します。

1.印刷前の確認
印刷時のページ数を事前に把握し、調整する。

2.動的処理
ページ数に応じてレポートを分割・保存する。

3.エラーチェック
ページ数が意図した範囲内かどうかを確認する。

Excel VBA 印刷時のページ数取得|使い方とポイント

使い方

シート.PageSetupは、シートの印刷設定を行います。Pages.Countは、印刷範囲内の総ページ数を取得します。

ポイント

1.表示倍率や印刷設定の影響
ページ数は PageSetup の設定(印刷範囲、縮尺、余白など)に依存します。

2.動作が遅くなる場合がある
大量のデータがある場合、ページ数取得に時間がかかることがあります。

3.シートの印刷範囲を確認
設定されている PrintArea に基づいてページ数が決まるため、正しい範囲が設定されているか確認してください。

 

Excel VBA  印刷時のページ数取得のサンプルコード

シートのページ数を取得

Option Explicit

Sub GetPageCount()
    Dim ws As Worksheet
    Dim pageCount As Integer
    
    ' 対象シートを指定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' ページ数を取得
    pageCount = ws.PageSetup.Pages.Count
    
    MsgBox "Sheet1のページ数は " & pageCount & " ページです。"
End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

印刷設定を変更してページ数を再計算

Option Explicit

Sub GetPageCountAfterSetting()
    Dim ws As Worksheet
    Dim pageCount As Integer
    
    ' 対象シートを指定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 印刷設定を変更
    With ws.PageSetup
        .Orientation = xlLandscape ' 横向き
        .Zoom = False
        .FitToPagesWide = 1 ' 横1ページに収める
        .FitToPagesTall = False ' 縦方向は制限しない
    End With
    
    ' ページ数を取得
    pageCount = ws.PageSetup.Pages.Count
    
    MsgBox "設定変更後、Sheet1のページ数は " & pageCount & " ページです。"
End Sub

すべてのシートのページ数を取得

Option Explicit

Sub GetPageCountForAllSheets()
    Dim ws As Worksheet
    Dim pageCount As Integer
    Dim result As String
    
    result = "各シートのページ数:" & vbCrLf
    For Each ws In ThisWorkbook.Sheets
        pageCount = ws.PageSetup.Pages.Count
        result = result & ws.Name & ": " & pageCount & " ページ" & vbCrLf
    Next ws
    
    MsgBox result
End Sub

ExcelVBAの「ページ数取得」を活用すると、印刷結果の事前確認や動的な処理が可能になります。`シート.PageSetup.Pages.Count を使用することで、ページ数を簡単に取得できますが、正確な印刷設定を整えることが重要です。

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問