エクセル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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
- Excel(エクセル) エクセルで 同じシートにある2ページに、おなじページをつけたい 3 2022/07/11 16:15
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- ノートパソコン ページ番号の入れ方について 3 2023/02/16 17:11
- その他(Microsoft Office) エクセルのヘッダー番号を順番に &[ページ番号]にしておいて 最終ページだけ別なものにしたいのですが 3 2022/08/03 19:02
- Visual Basic(VBA) 該当セルの値を別ブックのシート名と一緒であればコピーしてほしい 1 2022/11/10 20:12
- PDF EXCEL ページを指定してPDF出力するVBAを教えてください。 2 2023/02/09 10:27
- Visual Basic(VBA) VBAでPDFのアクティブページ番号取得 1 2023/05/25 12:41
- PDF vbaでpdfを開いて1ページ目のみ印刷する。 1 2022/11/12 12:35
- Visual Basic(VBA) VBAでWEBサーバー上に保存されたPDFファイルのリンク有効チェックについて 1 2022/11/11 16:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
在庫管理表に使うエクセルの関...
-
下記マクロでMsgBox "空白です...
-
REGEXREPLACE関数について、
-
エクセルでバーコード作成し使...
-
【マクロ】for next構文について
-
ユーザー定義関数をアドイン登...
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
エクセルで表
-
PDFの請求明細をエクセルにしたい
-
エクセルの関数について教えて...
-
Excelデータをコピペして、ペー...
-
スプレッドシート、Excelでの数...
-
LOOKUP関数を使えばいいのでし...
-
Excel VBについての質問です。
-
【マクロ】 IFERROR関数をマク...
-
エクセル日付 文字列の関数がエ...
-
【マクロ】読取専用のファイル...
-
【マクロ】その時、その時で変...
-
時間によってファイル名が変わ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報