教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 印刷】印刷される総ページ数を調べる方法について教えて!

構文

構文は以下の通りです。

Worksheets(シート名).PageSetup.Pages.Count

解説

PageSetup.Pages.Countは、指定したシートの印刷ページ数を取得するための機能です。印刷範囲やページ設定に基づいて、実際に生成される印刷ページ数を取得することができます。これにより、印刷ページ数に応じた処理を行うことが可能です。

使い方

以下に、基本的な使い方を紹介します。

Sub SetHeadersAndFooters()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1") ' ヘッダーやフッターを設定したいシートを指定
    Dim pageCount As Integer
    pageCount = ws.PageSetup.Pages.Count ' ページ数を取得
    ' 各ページごとにヘッダーやフッターを設定
    For i = 1 To pageCount
        ' ヘッダーやフッターの設定処理を記述する
        ' 例: ws.PageSetup.LeftHeader = "ヘッダー: ページ " & i
        '     ws.PageSetup.CenterFooter = "フッター: 作成日 " & Date
    Next i
End Sub

上記のコードでは、指定したシート("Sheet1")のページ数を取得しています。これにより、pageCountという変数にページ数が格納されます。次に、取得したページ数を使ってループ処理を行います。For i = 1 To pageCountという行で、1からページ数までの範囲でループ処理が行われます。ループ内で、各ページごとに異なるヘッダーやフッターを設定する処理を記述します。コメントとして示された例では、左ヘッダーに「ヘッダー: ページ X」、中央フッターに「フッター: 作成日 X」というテキストを設定しています。これを適宜変更して、ご自身の要件に合わせたヘッダーやフッターを設定してください。

プログラミング例

以下の例では、シート名を「Sheet1」とし、印刷ページ数を取得してメッセージボックスに表示する処理を行っています。

Sub GetPageCount()
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")
    Dim pageCount As Integer
    pageCount = ws.PageSetup.Pages.Count
    MsgBox "印刷ページ数: " & pageCount
End Sub

このプログラムを実行すると、「Sheet1」の印刷ページ数がメッセージボックスに表示されます。

まとめ

PageSetup.Pages.Countは、印刷時のページ数を取得するための機能です。これを使用することで、印刷範囲やページ設定に基づいて生成される実際の印刷ページ数を取得することができます。印刷物のページ数を自動的に取得し、その情報を活用する場合に便利です。