- ベストアンサー
EXCEL-VBAで印刷時のページ番号を取得したい
EXCEL97です。 ブックの目次を作るマクロを作っています。 ブック内のシート名を目次のシートに縦に並べることはできたのですが、 その横にセットしたページ数をどうやって取得するか悩んでいます。 過去ログも見たのですがHPageBreaks.Countでは プレビューでは1ページしかないはずのシートで 1が返ってきたりしてどうもうまくいきません。 良い方法があればどなたか教えてもらえないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Application.ExecuteExcel4Macro("get.document(50)") で、印刷ページ数が取得出来ます。 http://www2.odn.ne.jp/excel/waza/print.html
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >過去ログも見たのですがHPageBreaks.Countでは >プレビューでは1ページしかないはずのシートで1が返ってきたりしてどうもうまくいきません。 過去ログがどんな内容かはわかりませんが、1が返ってくるなら、あっているのでは?それは、たぶん、0ではありませんか? HPageBreaks.Count というのは、水平ページブレイクの数のことですから、最後のページには入りません。そこで、1つ足してあげなくてはなりません。 HPageBreaks.Count + 1 なお、正確には、この水平ページブレークと垂直ページブレークとがありますから、 Sub PageCount() 'ページ数を取る Dim lngHpage As Long Dim lngVPage As Long Dim lngPTotal As Long On Error Resume Next '水平改ページ数 + 1 lngHpage = ActiveSheet.HPageBreaks.Count + 1 '垂直改ページ数 + 1 lngVPage = ActiveSheet.VPageBreaks.Count + 1 '総ページ数を計算 lngPTotal = Int(lngHpage * lngVPage) MsgBox lngPTotal End Sub このようになります。ただし、改ページプレビューを使うとデータが飛んでしまうことがあります。 私も、ふだんは、Ver4 マクロ関数を使います。こちらは、直接、Applicationにアクセスして、取得していますので、若干ですが、取得時間が速いようです。
お礼
お礼が遅くなってすみません。 教えていただいたファンクションで無事 実現することができました。 アクティブなシートでないと取得できないということが わかるのに少々手間取りましたが(笑) ありがとうございました!