|
印刷ページ数を取得するため、以下のマクロを作成しました。
Excel2000で特定のファイルに対し実行したところ、For Each 文のHpageBreak Objectを取得する過程でエラーが発生しました。
debugしたところ、HpageBreaks.count = 3 でしたが、HpageBreaks(3)が存在しませんでした。どうしてでしょうか?
ちなみにExcel2002では正常に取得でき、HpageBreaks.count = 2が表示されました。
どなたかわかる方、教えてください。
Public Function F_CountPages(ByVal wshWork_Sheet1 As Worksheet) As Long
Dim lngV_PageNo As Long '印刷範囲内の垂直改ページ数
Dim lngH_PageNo As Long '印刷範囲内の水平改ページ数
Dim hpb As HPageBreak '垂直改ページ(object)
Dim vpb As VPageBreak '水平改ページ(object)
Dim strPrint_Area As String '印刷範囲のアドレス
With wshWork_Sheet1
'「改ページ」プレビュー
ActiveWindow.View = xlPageBreakPreview
'印刷範囲アドレス取得
strPrint_Area = .PageSetup.PrintArea
If strPrint_Area = "" Then
strPrint_Area = "A1:IV65536"
End If
'印刷領域の垂直改ページをカウント
For Each vpb In .VPageBreaks
If Not Application.Intersect(vpb.Location, .Range(strPrint_Area)) _
Is Nothing Then
lngV_PageNo = lngV_PageNo + 1
End If
Next vpb
'印刷領域の水平改ページをカウント
For Each hpb In .HPageBreaks
If Not Application.Intersect(hpb.Location, .Range(strPrint_Area)) _
Is Nothing Then
lngH_PageNo = lngH_PageNo + 1
End If
Next hpb
With .PageSetup
'拡大縮小印刷の場合
If CBool(.Zoom) = True Then
lngV_PageNo = lngV_PageNo + 1
lngH_PageNo = lngH_PageNo + 1
'枚数指定印刷の場合
Else
lngV_PageNo = IIf(Not .FitToPagesWide = False, _
.FitToPagesWide, lngV_PageNo + 1)
lngH_PageNo = IIf(Not .FitToPagesTall = False, _
.FitToPagesTall, lngH_PageNo + 1)
End If
End With
'印刷枚数取得
F_CountPages = lngV_PageNo * lngH_PageNo
'「標準」ビュー
ActiveWindow.View = xlNormalView
End With
End Function
|
|