投稿時間:2004/02/22(Sun) 03:13 投稿者名:花ちゃん
Eメール:
URL :
タイトル:試してみましたが!
Option Explicit Private Sub Command1_Click() ' On Error Resume Next Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim PrintPage As Integer Dim i As Long Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\test.xls") For Each xlSheet In xlBook.Worksheets PrintPage = PrintPage + fGetPage(xlSheet) Next xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing MsgBox "印刷ページ総数 : " & PrintPage & " Page" End Sub Private Function fGetPage(ByVal mySheet As Worksheet) As Integer Dim HPageCount As Integer, VPageCount As Integer, TotalPage As Integer If mySheet.UsedRange.Address = "$A$1" And _ IsEmpty(mySheet.Range("$A$1").Value) Then TotalPage = 0 Else HPageCount = mySheet.HPageBreaks.Count '横の改ページ数取得 VPageCount = mySheet.VPageBreaks.Count '縦の改ページ数取得 '横の改ページがない場合は縦の改ページ数+1が総ページ数になる If VPageCount = 0 Then TotalPage = HPageCount + 1 Else HPageCount = HPageCount + 1 VPageCount = VPageCount + 1 TotalPage = HPageCount * VPageCount End If End If fGetPage = TotalPage End Function
これでは、正確なページ数は取得できないようです。 垂直の改ページがある場合で印刷するものがない場合もカウントしてしまいます。 たとへば、一行目だけに2枚に渡るデータが記入されていて、水平方向に改ページが ある場合等は右側にデータが入っていなくてもカウントしてしまう。
正確には改ページの範囲を取得してその範囲にデータが記入されているか取得する 必要があるようですが、その方策は見つかりません。
通常はそのようなレイアウトで印刷しないとは思うのですが、又用紙設定等でどのように なるかテストする必要があるかと思います。
|