印刷ページ数、余白設定、印刷範囲の取得

印刷されるページ数と余白、印刷範囲の設定値を取得する。

VBAで印刷されるページ数の取得はPagesコレクションのCountプロパティから取得できます。
Countプロパティから取得できるのは単一シートのページ数のみなとなるので、ブック全体を印刷した場合の総ページ数は各シートの情報から取得する必要があります。

余白、印刷範囲の設定値の取得はPageSetupオブジェクトから取得できます。
余白はHeaderMargin、TopMargin、FooterMargin、BottomMargin、LeftMargin、RightMarginの各PrintAreaプロパティから、印刷範囲はPrintAreaプロパティから取得できます。

 ●印刷設定の取得

'******************************************************************
' 印刷設定の取得
'******************************************************************
Sub getPrintInfo()

    With Sheets("Sheet1")
        '印刷ページ数の取得
        Debug.Print "ページ数 : " & .PageSetup.Pages.Count
    
        'ヘッダ・フッタの余白設置値(ポイント)
        Debug.Print "ヘッダ余白 : " & .PageSetup.HeaderMargin & "ポイント"
        Debug.Print "フッダ余白 : " & .PageSetup.FooterMargin & "ポイント"
        
        '上下左右の余白設置値(ポイント)
        Debug.Print "余白(上) : " & .PageSetup.TopMargin & "ポイント"
        Debug.Print "余白(下) : " & .PageSetup.BottomMargin & "ポイント"
        Debug.Print "余白(左) : " & .PageSetup.LeftMargin & "ポイント"
        Debug.Print "余白(右) : " & .PageSetup.RightMargin & "ポイント"
    
        '印刷範囲(範囲指定がない場合は返り値は""になる)
        Debug.Print "印刷範囲 : " & .PageSetup.PrintArea
        
    End With

End Sub

 ■実行結果


 ●ブックの印刷総数の取得

'******************************************************************
' ブックの印刷総ページ数の取得
'******************************************************************
Sub getTotalPageCount()
Dim oSht As Object
Dim lPgCnt As Long
Dim sEachPg As String

    sEachPg = "--内訳(シート単位)--" & vbCrLf

    For Each oSht In ActiveWorkbook.Worksheets
        '総数の加算
        lPgCnt = lPgCnt + oSht.PageSetup.Pages.Count
        
        'シートごとのページ数
        sEachPg = sEachPg & oSht.Name & " : " & oSht.PageSetup.Pages.Count & "Page" & vbCrLf
    Next

    Debug.Print "総ページ数 : "; lPgCnt
    Debug.Print sEachPg

End Sub

 ■実行結果