印刷されるページ数と余白、印刷範囲の設定値を取得する。
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■実行結果



