ExcelVBA技
全般
E13M008
E13M008 (Excel2000~2013)
印刷の総ページ数を取得する
Excelのシートを印刷するときのページ数を得るkPageN関数を示します。
Excel2007からは PageSetup.Pagesプロパティ が追加されて利用できるようになりました。
ActiveSheet.PageSetup.Pages.Count
ここではバージョンに依存しない Excel4.0マクロ を用いた方法を示します。
'標準モジュール Option Explicit Option Private Module 'kPageN関数 'アクティブシートの印刷総ページ数を得る '戻り値:総ページ数 Function kPageN() As Long Dim vw&, pb As Boolean With ActiveWindow 'バグ対応 vw = .View: pb = ActiveSheet.DisplayPageBreaks: .View = xlPageBreakPreview kPageN = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)") 'Excel4.0マクロ 'kPageN = ActiveSheet.PageSetup.Pages.Count 'excel2007以降 .View = xlNormalView: .View = vw: ActiveSheet.DisplayPageBreaks = pb End With End Function 'kPageN関数の使用例 Sub example_kPageN() MsgBox ActiveSheet.Name & " 印刷ページ数=" & kPageN, , ActiveSheet.Parent.Name End Sub
印刷ページ数を取得するために Excel4.0マクロ や Pages.Countプロパティを用いると条件により実際の印刷総ページ数と異なる値が取得される不都合があります。
示した kPageN関数 は不都合を回避したコードとなっています。
Pages.Count プロパティを取得すると実際の印刷総ページ数と異なる値を取得する