- ベストアンサー
ExcelVBA、印刷ページを事前に知るには
ExcelVBAで印刷するのですが、事前にページ数を知る方法はあるでしょうか? ブック全体を印刷するのですが、シートによっては大量に印刷されてしまいます。 任意に指定したページ以上作成される場合は、警告メッセージを出したいと思っています。 よろしくお願い申し上げます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 こんな風かな? ただし、プリント・プレビューも含みます。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim i As Integer i = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)") If i > 5 Then '5ページよりも以上 If MsgBox(i & "ページありますが、継続しますか?", vbInformation + vbOKCancel) = vbCancel Then Cancel = True End If End If End Sub
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。Wendy02です。 今、Worksheets.Select (または、Sheets.Select)で、作業グループにして取れるかと思いましたが、取れませんでしたので、ご指摘のように、ループでしかないようですね。 Sub Test2() Dim i As Integer Dim sh As Worksheet For Each sh In Worksheets If WorksheetFunction.CountA(sh.Cells) > 0 Then i = i + Application.ExecuteExcel4Macro("GET.DOCUMENT(50,""" & sh.Name & """)") End If Next If i > 5 Then '5ページよりも以上 If MsgBox(i & "ページありますが、継続しますか?", vbInformation + vbOKCancel) = vbCancel Then Cancel = True End If End If End Sub
お礼
やはりそうでしたか。各シートを合計します。
お礼
回答ありがとうございます。 「Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")」なんて全く知りませんでした。
補足
このVBAはシート1枚当たりのページ数を表示しますが、ブック全体の印刷ページ枚数を表示することはできないでしょうか。 できなければFor Eachで各シート毎のページ数を合計するので問題ありませんが、もしそのような機能があるのであれば教えていただけないでしょうか。 よろしくお願い申し上げます。