- 日時: 2007/08/20 14:44
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[エクセル][][] * * キーワード:,,,,, * ***********************************************************************************
元質問:特定のエクセルファイルのページ総数取得方.. - tak 2004/02/21-22:04 No.8071
現在、特定のフォルダに存在するエクセルファイルの「印刷した時の」総ページ数取得処理を 考えています。 自分なりに調査、ネットでの検索を試みたのですが、こういった処理はあまり認知されていない のか、全然見当たりませんでした・・。 単にシート数の取得ならば可能なのですが、実際に印刷した場合の「印刷枚数」はどうすれば 取得可能なのでしょうか??
----------------------------------------------------------------------------------- Re: 特定のエクセルファイルのページ総数取.. - 花ちゃん 2004/02/21-23:34 No.8073 ----------------------------------------------------------------------------------- そのシートをどのように印刷するのか設定しないと印刷枚数は決まらないと思います。 同じシートでもA4横向きと縦向きでは枚数も変わってくるかと思います。 従ってまず、どのように印刷するのか、ページ設定をして下さい。 その上で水平方向の改ページを取得すれば印刷枚数が判ります。 垂直方向の改ページ数もプラスして下さい。 両方とも改ページ数 + 1 が印刷枚数になるようです。
# 2/22 1:13 追加 WEBで検索すれば下記のサイトが見つかりましたよ。 http://support.microsoft.com/default.aspx?scid=kb;ja;408042
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枚に渡るデータが記入されていて、水平方向に改ページが ある場合等は右側にデータが入っていなくてもカウントしてしまう。
正確には改ページの範囲を取得してその範囲にデータが記入されているか取得する 必要があるようですが、その方策は見つかりません。
通常はそのようなレイアウトで印刷しないとは思うのですが、又用紙設定等でどのように なるかテストする必要があるかと思います。
|