プロが教えるわが家の防犯対策術!

エクセル2000についてお尋ねします。

ヘッダの右側に
   ([シート毎のページ番号]/[シート毎のページ数])
フッタの中央に
   ([ブック全体の通しページ番号]/[ブック全体の総ページ数])
を入力・印刷したいのです。

今までは手入力でフッタのページ番号のうしろに「+前のシートまでのページ数」、[ブック全体の総ページ数]の代わりに数値を直接入力していたのですが、1つのブックにつきシート数が20~60程度ある上にページの追加・削減があるので、もっと簡単なやり方があったら教えてほしいです。

VBAは、まだ勉強を始めたばかりで、ネット上で使えそうなVBAをコピーして自分のエクセルに貼ることしか出来ません^^;
どうか、よろしくお願いします。

A 回答 (3件)

こんにちは。



こんな感じでしょうか?
必ずコピー等を取ったテスト用ブックで試して下さい。

ページ数によって、結構処理時間が掛かります。

'---------------------------------------------------------------------
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
'---------------------------------------------------------------------

この回答への補足

有難うございます。
試してみたのですが、総ページ数が31ページのものが「62」に、137ページのものが「392」に、135ページのものが「390」になってしまいました。
通しページ番号の方も、1シート目が1枚だから2シート目は2ページになるはずが、いきなり5ページになってしまいました。
PERSONAL.xlsに貼り付けるのがいけないのかも思い、作業用シートに貼ってみましたが、同じでした。
また、ページ設定で縮小印刷の設定がかかってるせいかなとも思いましたが、100%の設定のファイルで試してもうまく行きません(T_T)

それと申し遅れましたが、縦に長い表なので、横方向の改ページ数は考えなくて大丈夫です。(ごめんなさい!!)
それから、もし出来たらで結構なのですが、最初の方に表紙・目次など、カウントしたくないシートが入った時に、何か設定を変えるなどして、飛ばすことは可能でしょうか?

補足日時:2002/07/12 10:25
    • good
    • 0

こんにちは。



> 改ページプレビューでは確認しなかったんですが、
> シートを全選択して印刷プレビューで見た限りでは、
> ヘッダー部分の総ページ数コマンドで入力されてい
> る部分は「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から始まるというのは、印刷範囲外に使われていない(印刷範囲の中に無い)改ページがあるのでは?
どこかのセルで右クリックして、「すべての改ページを解除」して試して見てください。

また、新規ブックに適当にデータを入れて試しても、おかしな結果しか出ないようならご使用を中止してください。

こちらでは、印刷範囲以外に改行がある時以外は問題なく動作します。
    • good
    • 0
この回答へのお礼

こんばんは。
返事が遅くなってしまって申し訳ありませんでした。
会社にあるデータでいろいろ試してみたのですが、やっぱりうまく行きません(泣)

>Sheet1が1ページしかないのに、Sheet2の通し番号が5から始まるというのは、印刷範囲外に使われていない(印刷範囲の中に無い)改ページがあるのでは?
>どこかのセルで右クリックして、「すべての改ページを解除」して試して見てください。

改ページは入っていません。また、念のため一度改ページを挿入して、それから全部のシートについて「すべての改ページを解除」してみたのですが、やっぱりダメでした。

>新規ブックに適当にデータを入れて試しても、おかしな結果しか出ないようならご使用を中止してください。

新規ブックで、画面を改ページプレビューにしてからやってみたところ、うまく行きました。 だもので、諦めがつかなくて、自分で考えられる限りの設定を試してみたのですが、もうさっぱり分りません。

>ちなみに、全選択して印刷プレビューを見てはダメです。
>シート毎に見ないとまったく関係無い数値が出ます。

これがちょっと意味が分らないのですが、マクロを実行した後でヘッダーフッターを確認してみたところ、総ページ数のところに数値が入っているのだから、その後に全選択・印刷プレビューしても問題はないのでは?
ページ設定のところで先頭ページ番号は全部「1」に設定してありますし、実際、シートごとに見ても全選択してみても、総ページ数は変わっていませんし...

>これを全選択して印刷プレビューし、最終ページを見ると、ヘッダーは 14 / 14 でフッターは 20 / 14 になります。

ならないんですよ(・・? 途中の+αの数値が飛んじゃって、結果、総ページ数も実際のページ数より増えちゃってます(;_;)

どちらにせよ、今回の作業にはタイムアウトになってしまったので、結局手入力で作業しました。
でも、またいつか、別のファイルで作業することになるので、その頃までに自分でもう少し勉強して、作っていただいたマクロを参考に何とかしようと思います。
今回は、本当にありがとうございました。

お礼日時:2002/07/16 22:22

こんにちは。



> 総ページ数が31ページのものが「62」に、

メニューの表示-改ページプレビューで見ると何ページになってますか?ひょっとして、本来データがあるのに印刷範囲にしてない行や列がありますか?

> 最初の方に表紙・目次など、カウントしたくないシートが入った時に、何か設定を変えるなどして、飛ばすことは可能でしょうか?

これは、ヘッダーフッターに入れるのであれば、不可能だと思います。

この回答への補足

再度のアドバイス、有難うございます。

>メニューの表示-改ページプレビューで見ると何ページになってますか?ひょっとして、本来データがあるのに印刷範囲にしてない行や列がありますか?

改ページプレビューでは確認しなかったんですが、シートを全選択して印刷プレビューで見た限りでは、ヘッダー部分の総ページ数コマンドで入力されている部分は「31」になっていました。(フッターは62)印刷範囲の設定はかけてありますが、データはその外には入っていません。試しに、一時的に作った「印刷範囲を設定せずに作ったファイル」でもダメでしたし...
今自宅で、作業を行いたいファイルは会社にあるので、月曜になったら改ページプレビューでもう一度確認してみます。申し訳ありませんが、このマクロを使う時の注意事項等、何かありましたら教えていただけないでしょうか。よろしくお願いします。

>ヘッダーフッターに入れるのであれば、不可能だと思います。
分りました。ありがとうございました。

補足日時:2002/07/13 10:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!