• ベストアンサー

EXCEL-VBAで印刷時のページ番号を取得したい

EXCEL97です。 ブックの目次を作るマクロを作っています。 ブック内のシート名を目次のシートに縦に並べることはできたのですが、 その横にセットしたページ数をどうやって取得するか悩んでいます。 過去ログも見たのですがHPageBreaks.Countでは プレビューでは1ページしかないはずのシートで 1が返ってきたりしてどうもうまくいきません。 良い方法があればどなたか教えてもらえないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Application.ExecuteExcel4Macro("get.document(50)") で、印刷ページ数が取得出来ます。 http://www2.odn.ne.jp/excel/waza/print.html

papy_moon
質問者

お礼

お礼が遅くなってすみません。 教えていただいたファンクションで無事 実現することができました。 アクティブなシートでないと取得できないということが わかるのに少々手間取りましたが(笑) ありがとうございました!

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >過去ログも見たのですが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にアクセスして、取得していますので、若干ですが、取得時間が速いようです。

関連するQ&A

  • Excel2010 VBA終了時に強制終了する

    Excel2003、2007で実行した場合は正常終了するが Excel2010で実行するとVBA終了時に強制終了します。 処理は、マクロありブックからマクロなしブックを作成するために、 新規ブックを作成しマクロありブックからシートを移動する処理です。 VBA起動は、フォームコントロールから行っています。 VBA終了時に(End Sub)後にEXCELがなぜか強制終了します。 (Microsoft Excel は動作を停止しました。のメッセージが表示される) なお、 ・フォームコントロールから実行した場合はEXCELが強制終了し、   デバックモードで実行した場合は強制終了しません。  ・マクロありファイルの種類:Excel 97-2003ブック  ・★★★のソースが含まれていると、Excelが強制終了します。 以下、ソース。 Sub ファイル保存()   'マクロなしファイルを作成 CreateNoMacroBook End Sub '←ここで異常終了が発生する。 Sub CreateNoMacroBook() Dim fname As String Dim ns As Integer Dim cnt As Integer Dim i As Integer 'マクロありブックの名前を取得 fname = ActiveWorkbook.Name 'マクロありブックのシート数を取得 cnt = ActiveWorkbook.Worksheets.Count 'すべてのシートをMoveするとエラーになるのでシートを追加 Worksheets.Add After:=Worksheets(Worksheets.Count) '新規ブック作成時のデフォルトのシート数を保管 ns = Application.SheetsInNewWorkbook '新規ブック作成時のシート数を変更 Application.SheetsInNewWorkbook = 1 '新規ブック作成 Workbooks.Add '新規ブック作成時のデフォルトのシート数に戻す Application.SheetsInNewWorkbook = ns 'マクロありブックのシートを新規ブックの"Sheet1"シートの前に移動 For i = 1 To cnt Workbooks(fname).Worksheets(1).Move Before:=Workbooks(Workbooks.Count).Worksheets("Sheet1")  '★★★ Next i '表示用に新規ブックの一枚目のシートをアクティブにする Workbooks(Workbooks.Count).Worksheets(1).Activate Application.DisplayAlerts = False '新規ブックのデフォルトシート"Sheet1"を削除する Workbooks(Workbooks.Count).Worksheets("Sheet1").Delete Workbooks(Workbooks.Count).Activate Application.DisplayAlerts = True End Sub

  • VBAで別シートに改ページをして印刷する

    現在アクティブになっているシート(sheet1)内で 合計値を算出し、別シート(sheet2)に出力する処理をしています。 二つは同じbookです。 小計値を出力したタイミングで改ページを挿入したいのですが、 うまくいきません。何か方法があるのでしょうか? with sheet1 loop ・・・小計処理 ・・・sheet2に小計値セット Set ast = ActiveWorkbook ast.Worksheets("sheet2").HPageBreaks.Add Before:=Range("a7") '(↑a7は仮でいれています。実際は行変動) end loop ・・・合計値出力 endwith また、最終的にはsheet2を別bookに移動してから印刷するのですが、 設定した改ページは保持されるのでしょうか??

  • Excel2007のVBAでPreviewすると

    初めまして。 Excel2007のVBAで困っていることがあり解決方法を探しています。 もともとExcel97で稼働していたマクロ+VBA付きのシートをExcel2007で稼働させようとしています。 マクロ・VBAで作成されたシート(sheet2)をフォームに配置した印刷ボタンをユーザーに押してもらうことでプレビューを表示します。 印刷ボタンを押したときのプレビューのコード Worksheets("sheet2").PrintOut Copies:=1, Preview:=True でプレビュー画面を表示したところ、印刷ボタンや印刷設定ボタン等の上部にあるボタンが薄いグレーの配色で押せなくなりました。 調べた結果、ScreenUpdatingがfalseだと同じ状態になるとわかったので Application.ScreenUpdating = True Worksheets("sheet2").PrintOut Copies:=1, Preview:=True と書き換えましたが、不具合は解消されませんでした。 またブックを閉じずに、マクロを再起動させて同様の動作をおこなうと 何故かちゃんとボタンが押せるプレビューが表示します。 その状態のブックを保存して改めて開くと同じようにプレビューのボタンが押せなくなっています。 同じような現象で解決された方いらしたら解決方法を教えて頂ければありがたいです。 よろしくお願いいたします。

  • Excel2003の印刷についてですが・・・

    Excel2003の印刷についてですが、印刷をしますと余分に2~3枚印刷します。 シート(データ)上では、1ページ分しかありませんし、印刷プレビューでも1ページ分しか プレビューしません。 ブック全体を印刷設定をしていると思ったのですが、このデータには6シート ありますので、ブック全体を印刷すると6枚印刷するはずですので、これでは 無いと思います。 用紙サイズは、A4サイズです。 印刷の設定では何も問題が無いのですが、このような現象に詳しい方ご教授 お願いします。

  • EXCEL2000の特定のファイルが横向きに印刷できない

    マクロが入っているのが,原因とは考えにくいですが, ページ設定やプリンタのプロパティで印刷の向きを横にしても印刷が縦で出てきてしまう。プレビューも縦。。 なぜ??でも,横向きに設定した新規のシートをプレビューすると,ちゃんと横向きに見える。。その特定のシートをいったんコピーして,コピーしたファイル名を変更して,その変更したファイルを同様に横向きに設定してプレビューや印刷をかけたところ,それは問題なく印刷できた。名前が変わっただけで,中身は一緒なので,ひとまずそれを使うということにしたが,原因がわからない。。 わかりますか???教えてください!

  • エクセル2000・シートごとのページ番号とページ数、ブック全体のページ番号と総ページ数

    エクセル2000についてお尋ねします。 ヘッダの右側に    ([シート毎のページ番号]/[シート毎のページ数]) フッタの中央に    ([ブック全体の通しページ番号]/[ブック全体の総ページ数]) を入力・印刷したいのです。 今までは手入力でフッタのページ番号のうしろに「+前のシートまでのページ数」、[ブック全体の総ページ数]の代わりに数値を直接入力していたのですが、1つのブックにつきシート数が20~60程度ある上にページの追加・削減があるので、もっと簡単なやり方があったら教えてほしいです。 VBAは、まだ勉強を始めたばかりで、ネット上で使えそうなVBAをコピーして自分のエクセルに貼ることしか出来ません^^; どうか、よろしくお願いします。

  • エクセル 2ページ/枚の印刷で

    エクセルで、シートで分けて作った表などを、2ページ/枚で2枚ずつ1ページに印刷したくて、設定したのですが、ひとつだけ横の設定になっているシートがあって、その横のシートの隣の縦のシートと2ページを1ページに印刷すると、縦の方まで横に縮小されて印刷されてしまいます。 ページ設定は縦のままなのですが、これを縦と横で1ページに印刷する方法はありますか?

  • エクセルで作成したファイルにページ番号をつけたいのですが、始まりのページ番号が指定したページ番号に

    エクセルで作成したファイルにページ番号をつけたいと思います。 1つのブックに8シートあり、1つのシートに2頁あります。 この16ページに自動でページ番号を付けたいと思っているのですが、 イメージはフッターに【ページ数】/【総ページ数】というかたちで印刷したいと思っています。 ページは1ページからではなく、16ページからはじめたいとおもいます。 そのため、下記のように印刷をしたいのですが、  ○○会社16/32 どのようにしたらよいのか分かりません。 どうか皆さんやり方を教えて頂けないでしょうか。 宜しくお願い致します。

  • エクセル2003、現在位置の印刷番号は?

    目次をつくるとき、ページ番号が判らなくて いつも時間がかかってしまいます。 一度印刷してみて、紙のページ番号を見て目次にふっています。 自動で目次をつくるマクロもあるようですが、初心者でマクロ がなんなのかもわかりません。 紙に印刷をしないで、それぞれのシートが何ページ目に印刷される のか、簡単にわかる方法はありますか?

  • excel印刷プレビュー時の改ページ

    お願いします。 excelで1シートに複数ページのデータを作成し、印刷プレビューで 確認する時にマウスのスクロールボタンですぐに改ページできる場合と スクロールボタンで改ページができず「次ページアイコン」をクリック しなければならない場合があります。 同じような作り方をしたシートやブックでも改ページができたりできな かったりします。 なぜでしょう? ご存知の方がいらっしゃいましたら お願いします。

専門家に質問してみよう