
エクセル2000についてお尋ねします。
ヘッダの右側に
([シート毎のページ番号]/[シート毎のページ数])
フッタの中央に
([ブック全体の通しページ番号]/[ブック全体の総ページ数])
を入力・印刷したいのです。
今までは手入力でフッタのページ番号のうしろに「+前のシートまでのページ数」、[ブック全体の総ページ数]の代わりに数値を直接入力していたのですが、1つのブックにつきシート数が20~60程度ある上にページの追加・削減があるので、もっと簡単なやり方があったら教えてほしいです。
VBAは、まだ勉強を始めたばかりで、ネット上で使えそうなVBAをコピーして自分のエクセルに貼ることしか出来ません^^;
どうか、よろしくお願いします。
No.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
'---------------------------------------------------------------------
この回答への補足
有難うございます。
試してみたのですが、総ページ数が31ページのものが「62」に、137ページのものが「392」に、135ページのものが「390」になってしまいました。
通しページ番号の方も、1シート目が1枚だから2シート目は2ページになるはずが、いきなり5ページになってしまいました。
PERSONAL.xlsに貼り付けるのがいけないのかも思い、作業用シートに貼ってみましたが、同じでした。
また、ページ設定で縮小印刷の設定がかかってるせいかなとも思いましたが、100%の設定のファイルで試してもうまく行きません(T_T)
それと申し遅れましたが、縦に長い表なので、横方向の改ページ数は考えなくて大丈夫です。(ごめんなさい!!)
それから、もし出来たらで結構なのですが、最初の方に表紙・目次など、カウントしたくないシートが入った時に、何か設定を変えるなどして、飛ばすことは可能でしょうか?
No.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から始まるというのは、印刷範囲外に使われていない(印刷範囲の中に無い)改ページがあるのでは?
どこかのセルで右クリックして、「すべての改ページを解除」して試して見てください。
また、新規ブックに適当にデータを入れて試しても、おかしな結果しか出ないようならご使用を中止してください。
こちらでは、印刷範囲以外に改行がある時以外は問題なく動作します。
こんばんは。
返事が遅くなってしまって申し訳ありませんでした。
会社にあるデータでいろいろ試してみたのですが、やっぱりうまく行きません(泣)
>Sheet1が1ページしかないのに、Sheet2の通し番号が5から始まるというのは、印刷範囲外に使われていない(印刷範囲の中に無い)改ページがあるのでは?
>どこかのセルで右クリックして、「すべての改ページを解除」して試して見てください。
改ページは入っていません。また、念のため一度改ページを挿入して、それから全部のシートについて「すべての改ページを解除」してみたのですが、やっぱりダメでした。
>新規ブックに適当にデータを入れて試しても、おかしな結果しか出ないようならご使用を中止してください。
新規ブックで、画面を改ページプレビューにしてからやってみたところ、うまく行きました。 だもので、諦めがつかなくて、自分で考えられる限りの設定を試してみたのですが、もうさっぱり分りません。
>ちなみに、全選択して印刷プレビューを見てはダメです。
>シート毎に見ないとまったく関係無い数値が出ます。
これがちょっと意味が分らないのですが、マクロを実行した後でヘッダーフッターを確認してみたところ、総ページ数のところに数値が入っているのだから、その後に全選択・印刷プレビューしても問題はないのでは?
ページ設定のところで先頭ページ番号は全部「1」に設定してありますし、実際、シートごとに見ても全選択してみても、総ページ数は変わっていませんし...
>これを全選択して印刷プレビューし、最終ページを見ると、ヘッダーは 14 / 14 でフッターは 20 / 14 になります。
ならないんですよ(・・? 途中の+αの数値が飛んじゃって、結果、総ページ数も実際のページ数より増えちゃってます(;_;)
どちらにせよ、今回の作業にはタイムアウトになってしまったので、結局手入力で作業しました。
でも、またいつか、別のファイルで作業することになるので、その頃までに自分でもう少し勉強して、作っていただいたマクロを参考に何とかしようと思います。
今回は、本当にありがとうございました。
No.2
- 回答日時:
こんにちは。
> 総ページ数が31ページのものが「62」に、
メニューの表示-改ページプレビューで見ると何ページになってますか?ひょっとして、本来データがあるのに印刷範囲にしてない行や列がありますか?
> 最初の方に表紙・目次など、カウントしたくないシートが入った時に、何か設定を変えるなどして、飛ばすことは可能でしょうか?
これは、ヘッダーフッターに入れるのであれば、不可能だと思います。
この回答への補足
再度のアドバイス、有難うございます。
>メニューの表示-改ページプレビューで見ると何ページになってますか?ひょっとして、本来データがあるのに印刷範囲にしてない行や列がありますか?
改ページプレビューでは確認しなかったんですが、シートを全選択して印刷プレビューで見た限りでは、ヘッダー部分の総ページ数コマンドで入力されている部分は「31」になっていました。(フッターは62)印刷範囲の設定はかけてありますが、データはその外には入っていません。試しに、一時的に作った「印刷範囲を設定せずに作ったファイル」でもダメでしたし...
今自宅で、作業を行いたいファイルは会社にあるので、月曜になったら改ページプレビューでもう一度確認してみます。申し訳ありませんが、このマクロを使う時の注意事項等、何かありましたら教えていただけないでしょうか。よろしくお願いします。
>ヘッダーフッターに入れるのであれば、不可能だと思います。
分りました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
Excelの新しい空白のブックを開...
-
【マクロ】A列にある、日付(本...
-
【マクロ】宣言は、何のために...
-
スプレッドシートで複数のプル...
-
【マクロ】アクティブセルの2...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【エクセル】期限アラートについて
-
excelで日付関数の文字列変換の...
-
【マクロ】別のブックから、フ...
-
派遣会社とかハローワークとか...
-
【関数】不規則な文章から●●-●●...
-
iPhoneのExcelアプリで、別のシ...
-
9月17日でサービス終了らし...
-
マクロOn Error GoTo ErrLabel...
-
findメソッドで、10:00:01 を検...
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報