質問 |
||
QNo.311847 | エクセル2000・シートごとのページ番号とページ数、ブック全体のページ番号と総ページ数 | |
---|---|---|
質問者:ufufuehehe |
エクセル2000についてお尋ねします。 ヘッダの右側に ([シート毎のページ番号]/[シート毎のページ数]) フッタの中央に ([ブック全体の通しページ番号]/[ブック全体の総ページ数]) を入力・印刷したいのです。 今までは手入力でフッタのページ番号のうしろに「+前のシートまでのページ数」、[ブック全体の総ページ数]の代わりに数値を直接入力していたのですが、1つのブックにつきシート数が20〜60程度ある上にページの追加・削減があるので、もっと簡単なやり方があったら教えてほしいです。 VBAは、まだ勉強を始めたばかりで、ネット上で使えそうなVBAをコピーして自分のエクセルに貼ることしか出来ません^^; どうか、よろしくお願いします。 |
|
困り度:
|
||
質問投稿日時: 02/07/11 18:11 |
回答 |
|
ANo.3 | こんにちは。 > 改ページプレビューでは確認しなかったんですが、 > シートを全選択して印刷プレビューで見た限りでは、 > ヘッダー部分の総ページ数コマンドで入力されてい > る部分は「31」になっていました。 ちなみに、全選択して印刷プレビューを見てはダメです。 シート毎に見ないとまったく関係無い数値が出ます。 &P / &N を全てのシートヘッダーにいれ、&P+x / ax を各ページに入れてます。 ax は全てのシートをループして各ページの改ページをカウントしていった合計で、x は前のページの改ページ数です。 シート1のページ数 1 (改ページ数 0) シート2のページ数 5 (改ページ数 4) シート3のページ数 8 (改ページ数 7) だとすると、フッターは下記のような感じになります。 → 1 / 14 → 1+1 / 14 〜 5+1 /14 まで → 1+6 / 14 〜 8+6 /14 まで これを全選択して印刷プレビューし、最終ページを見ると、ヘッダーは 14 / 14 でフッターは 20 / 14 になります。 印刷プレビューとは、ページの数え方が違い、同じ数え方をVBAでやる方法は私には解かりません。 あと、このマクロは改ページを数えているので、印刷範囲にない場所に改ページがあっても数えてしまいます。 Sheet1が1ページしかないのに、Sheet2の通し番号が5から始まるというのは、印刷範囲外に使われていない(印刷範囲の中に無い)改ページがあるのでは? どこかのセルで右クリックして、「すべての改ページを解除」して試して見てください。 また、新規ブックに適当にデータを入れて試しても、おかしな結果しか出ないようならご使用を中止してください。 こちらでは、印刷範囲以外に改行がある時以外は問題なく動作します。 |
---|---|
回答者:papayuka | |
種類:アドバイス どんな人:一般人 自信:自信あり |
|
回答日時: 02/07/13 16:09 |
|
| |
この回答へのお礼 | こんばんは。 返事が遅くなってしまって申し訳ありませんでした。 会社にあるデータでいろいろ試してみたのですが、やっぱりうまく行きません(泣) >Sheet1が1ページしかないのに、Sheet2の通し番号が5から始まるというのは、印刷範囲外に使われていない(印刷範囲の中に無い)改ページがあるのでは? >どこかのセルで右クリックして、「すべての改ページを解除」して試して見てください。 改ページは入っていません。また、念のため一度改ページを挿入して、それから全部のシートについて「すべての改ページを解除」してみたのですが、やっぱりダメでした。 >新規ブックに適当にデータを入れて試しても、おかしな結果しか出ないようならご使用を中止してください。 新規ブックで、画面を改ページプレビューにしてからやってみたところ、うまく行きました。 だもので、諦めがつかなくて、自分で考えられる限りの設定を試してみたのですが、もうさっぱり分りません。 >ちなみに、全選択して印刷プレビューを見てはダメです。 >シート毎に見ないとまったく関係無い数値が出ます。 これがちょっと意味が分らないのですが、マクロを実行した後でヘッダーフッターを確認してみたところ、総ページ数のところに数値が入っているのだから、その後に全選択・印刷プレビューしても問題はないのでは? ページ設定のところで先頭ページ番号は全部「1」に設定してありますし、実際、シートごとに見ても全選択してみても、総ページ数は変わっていませんし... >これを全選択して印刷プレビューし、最終ページを見ると、ヘッダーは 14 / 14 でフッターは 20 / 14 になります。 ならないんですよ(・・? 途中の+αの数値が飛んじゃって、結果、総ページ数も実際のページ数より増えちゃってます(;_;) どちらにせよ、今回の作業にはタイムアウトになってしまったので、結局手入力で作業しました。 でも、またいつか、別のファイルで作業することになるので、その頃までに自分でもう少し勉強して、作っていただいたマクロを参考に何とかしようと思います。 今回は、本当にありがとうございました。 |
回答 |
|
ANo.2 | こんにちは。 > 総ページ数が31ページのものが「62」に、 メニューの表示−改ページプレビューで見ると何ページになってますか?ひょっとして、本来データがあるのに印刷範囲にしてない行や列がありますか? > 最初の方に表紙・目次など、カウントしたくないシートが入った時に、何か設定を変えるなどして、飛ばすことは可能でしょうか? これは、ヘッダーフッターに入れるのであれば、不可能だと思います。 |
---|---|
回答者:papayuka | |
種類:アドバイス どんな人:一般人 自信:自信あり |
|
回答日時: 02/07/13 00:39 |
|
| |
この回答への補足 | 再度のアドバイス、有難うございます。 >メニューの表示−改ページプレビューで見ると何ページになってますか?ひょっとして、本来データがあるのに印刷範囲にしてない行や列がありますか? 改ページプレビューでは確認しなかったんですが、シートを全選択して印刷プレビューで見た限りでは、ヘッダー部分の総ページ数コマンドで入力されている部分は「31」になっていました。(フッターは62)印刷範囲の設定はかけてありますが、データはその外には入っていません。試しに、一時的に作った「印刷範囲を設定せずに作ったファイル」でもダメでしたし... 今自宅で、作業を行いたいファイルは会社にあるので、月曜になったら改ページプレビューでもう一度確認してみます。申し訳ありませんが、このマクロを使う時の注意事項等、何かありましたら教えていただけないでしょうか。よろしくお願いします。 >ヘッダーフッターに入れるのであれば、不可能だと思います。 分りました。ありがとうございました。 |
この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答良回答10pt |
|
ANo.1 | こんにちは。 こんな感じでしょうか? 必ずコピー等を取ったテスト用ブックで試して下さい。 ページ数によって、結構処理時間が掛かります。 '--------------------------------------------------------------------- Sub Test() Dim ws As Worksheet Dim AllCnt As Integer, pCnt As Integer AllCnt = 0 For Each ws In Worksheets AllCnt = AllCnt + PageCnt(ws) Next ws pCnt = 0 For i = 1 To Worksheets.Count Set ws = Worksheets(i) ws.PageSetup.RightHeader = "&P / &N " If i = 1 Then ws.PageSetup.CenterFooter = "&P / " & AllCnt Else pCnt = pCnt + PageCnt(Worksheets(i - 1)) ws.PageSetup.CenterFooter = "&P+" & pCnt & " / " & AllCnt End If Next i Set ws = Nothing End Sub '--------------------------------------------------------------------- Function PageCnt(ws As Worksheet) As Integer Dim h As Integer, v As Integer PageCnt = 0 If ws.UsedRange.Address = "$A$1" Then If IsEmpty(ws.Range("A1").Value) Then Exit Function End If End If h = ws.HPageBreaks.Count v = ws.VPageBreaks.Count If v = 0 Then PageCnt = h + 1 Else PageCnt = (h + 1) * (v + 1) End If End Function '--------------------------------------------------------------------- |
---|---|
回答者:papayuka | |
種類:アドバイス どんな人:一般人 自信:自信あり |
|
回答日時: 02/07/11 21:43 |
|
| |
この回答への補足 | 有難うございます。 試してみたのですが、総ページ数が31ページのものが「62」に、137ページのものが「392」に、135ページのものが「390」になってしまいました。 通しページ番号の方も、1シート目が1枚だから2シート目は2ページになるはずが、いきなり5ページになってしまいました。 PERSONAL.xlsに貼り付けるのがいけないのかも思い、作業用シートに貼ってみましたが、同じでした。 また、ページ設定で縮小印刷の設定がかかってるせいかなとも思いましたが、100%の設定のファイルで試してもうまく行きません(T_T) それと申し遅れましたが、縦に長い表なので、横方向の改ページ数は考えなくて大丈夫です。(ごめんなさい!!) それから、もし出来たらで結構なのですが、最初の方に表紙・目次など、カウントしたくないシートが入った時に、何か設定を変えるなどして、飛ばすことは可能でしょうか? |
この回答へのお礼 | この回答にお礼をつける(質問者のみ) |