VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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枚に渡るデータが記入されていて、水平方向に改ページが
ある場合等は右側にデータが入っていなくてもカウントしてしまう。

正確には改ページの範囲を取得してその範囲にデータが記入されているか取得する
必要があるようですが、その方策は見つかりません。

通常はそのようなレイアウトで印刷しないとは思うのですが、又用紙設定等でどのように
なるかテストする必要があるかと思います。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -