• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで出力時にページ数を表示させる方法)

エクセルで出力時にページ数を表示させる方法

このQ&Aのポイント
  • エクセルで1シートに1ページ分ずつのデータを出力する際に、「△/○ページ」という形式でページ数を表示させたい方法について知りたい。
  • 通常は連続印刷を行うことで実現可能だが、シートを選択せずに印刷する方法について知りたい。
  • 個々のページでも正確にページ数を表示させるためには、作成されるシート数が総ページ数になるようにしたい。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

nknnnkさん、こんにちは。merlionXXです。 > ロックされていないセルに全く入力されていない状態でプレビューを表示 なるほど・・・ それはまったく想定外でした。他人のためにコードを書くということはそういう想定外の事態に耐え得るものにしなければいけないということですね。 nknnnkさんのおかげでわたしも大いに勉強になりました。 ということで、これではいかがでしょう? Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim ar() As Variant Dim s As Worksheet Dim Rng As Range, c As Range Dim i As Integer, n As Integer For Each s In Worksheets On Error Resume Next Set Rng = s.Cells.SpecialCells(xlCellTypeConstants, 3) On Error GoTo 0 If Not Rng Is Nothing Then For Each c In Rng If c.Locked = False Then ReDim Preserve ar(i) ar(i) = s.Name i = i + 1 Exit For End If Next c End If Set Rng = Nothing Next s If i > 0 Then For n = LBound(ar) To UBound(ar) Sheets(ar(n)).PageSetup.CenterFooter = n + 1 & "/" & UBound(ar) + 1 Next Else MsgBox "すみません・・・・" _ & vbCr & "" _ & vbCr & "番号ふるシートが見つからないんですぅ。", , " 。o゜o(´□`*)o゜o゜о" End If End Sub

nknnnk
質問者

お礼

すばらしいです!!! こんなこともできちゃうんですね!!! この書類は会社で使うものですが、うちは30人くらいしかいない小さな会社なので、 これくらい愛嬌があった方がみんなうれしいと思います。 merlionXXさん、本当にありがとうございました。 いろいろと考えてくださり、とても感謝しています。 また新たな疑問が生まれたら、こちらでお世話になるかもしれませんが、どうか懲りずによろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

Σ( ̄ロ ̄lll) 失敗! ごめんなさい。下のコード、上から4行目の修正です。 Dim c As Rangeとなってますが、 Dim Rng As Range, c As Range に変えてください。

nknnnk
質問者

お礼

ありがとうございます!!今やっと完成しました!!感激です!! 念のため確認なんですが、教えていただいたコードを入力し、ロックされていないセルに全く入力されていない状態でプレビューを表示しようとすると 実行時エラー'92': For ループが初期化されていません。 というメッセージが出ました。(メッセージの「終了」を選択すると、プレビュー画面は表示されます) それでしばらく試行錯誤していたのですが、いくつかのシートのロックされていないセルに数値を入力したところ、 プレビュー画面がエラーなしで表示され、その上きちんと「○/入力されているシート総数」となっていました。 このメッセージの意味を少し調べたけどよくわからなかったのですが、 そもそも「入力されているシート」をカウントさせているのに、それが1枚もなければ、プレビューでページ数表示のしようがないですよね。 だからだったのだろうと理解したのですが、これはだいたい合っていますか? 現段階でもともとの質問+αの回答を得られているので、 「私の理解が間違っていて、教えていただいたコードを変更しないと不具合が生じる」ということがなければ、 私としてはこのままで十分です。 とても助かりました!本当にありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

nknnnkさん、おはようございます。 条件付きでのページ番号付与VBAのサンプル、簡単なものを一つ作成してみました。 ・・・といってもちょっと梃子摺りましたよ (*´∇`*) 各ページのロックされていないセルの一つにでも入力があれば、そのページをカウントしてページ番号を振ります。合計ページ数はカウントされるページの合計数です。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim ar() As Variant Dim s As Worksheet Dim c As Range Dim i As Integer, n As Integer For Each s In Worksheets On Error GoTo line Set Rng = s.Cells(1, 1).SpecialCells(xlCellTypeConstants, 3) For Each c In Rng If c.Locked = False Then ReDim Preserve ar(i) ar(i) = s.Name i = i + 1 Exit For End If Next c Set Rng = Nothing line: Next s For n = LBound(ar) To UBound(ar) Sheets(ar(n)).PageSetup.CenterFooter = n + 1 & "/" & UBound(ar) + 1 Next End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> 1)現在、フッターにページ数を表示する式(?コードなんでしょうか?)を入れてあるのですが、これは消した方がいいのでしょうか? 中央のフッターであれば、このマクロを実行すれば消えますから別に消さなくともOKです。 > (2)最初の質問の時点で、詳しく説明していなかったのですが~ これって、説明が足らないなんてレベルじゃないですね。 すべてのシートに一律同じ操作をするのと、個別のシートに個別の条件で操作するのではまったく異なった要求ですよ。 やろうと思えば出来なくはないですが、それだけでは上方不足です。 カウントしない条件として、たとえば、「各シートA1セルが空白だったら」とか「各シートのロックされていないセルのすべてに入力がなかった場合」とか、該当するシートを他のシートと判別できるキーがないとマクロの書き様がないとは思いませんか? > (3)以前他の方の質問から同じようなコードをコピーして使ったのですが、 メールに添付して送ったところ、メールを受け取った者のパソコンでは同じように機能しません~ マクロの設定が「高」とか「低」というのが問題のようだったとわかっているのであれば、これもマクロですから同じですよ。先方に、マクロを有効にして開くように言ってください。 マクロで先方のセキュリティーレベルをいじることはできません。というか、それをやる「マクロウィルス」を防ぐためにセキュリティが設定されているのです。

nknnnk
質問者

お礼

迅速な回答、ありがとうございます。 そして、説明不足等、大変申し訳ありません。 今まで使っていた会社の書類を、現在順番に使いやすく作り直しているところで、 最初にご回答いただいた方法でできあがる書類もあり、「これができるなら・・・」とつい甘えてしまいました。 merlionXXさんの回答(どういう条件か、など)を参考にさせていただき、もう一度新しく質問を投稿します。 マクロについても全く知識がなく、セキュリティレベルもよくわからなくてとりあえず「中」にしてました。 また、受け取った者(こちらもマクロの知識がない)が今日はお休みしているので、 最初に開いたときにどんなエラーメッセージが出たのかはきちんと把握していません。 もう一度こちらも確認してから新規の質問として投稿します。 せっかくご回答下さったのに、二度手間のようになってしまってすいません。 色々教えていただき、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

#2のmerlionXXです。 先ほど、自分で書きながらまだ改良の余地があるなあと思い、考えたところ、もっと簡単なコードで実現できました。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim a As Integer, b As Integer a = ThisWorkbook.Worksheets.Count b = ActiveSheet.Index ActiveSheet.PageSetup.CenterFooter = b & "/" & a End Sub

nknnnk
質問者

お礼

できました!!ありがとうございます!助かりました! 私はVBAが全くわからなくて、今回も手順の通りに入力しただけなのですが、もしよければ関連して3つほどさらに教えて欲しいです。 (1)現在、フッターにページ数を表示する式(?コードなんでしょうか?)を入れてあるのですが、これは消した方がいいのでしょうか? (2)最初の質問の時点で、詳しく説明していなかったのですが、  現在全部で10シートあり、全てに表は作られていて、計算式にはロックがかけてあるので、入力できる範囲は限られています。  その内5シートのみに入力されていた場合、分母を「△/10ページ」ではなく、「△/5ページ」と表示するのは無理でしょうか?  シートは存在しても、ある決められた範囲に数値などが入力されていないシートはカウントから外したいのです。  これができるとベストです。 (3)以前他の方の質問から同じようなコードをコピーして使ったのですが、  メールに添付して送ったところ、メールを受け取った者のパソコンでは同じように機能しませんでした。  マクロの設定が「高」とか「低」というのが問題のようだったのですが、解決方法がわかりませんでした。  このコードも同じようになってしまいませんか?  それを解決するために必要な作業があれば教えてください。  ちなみに以前コピーしたのは、シートの内容を変更した時だけ更新日が更新されるようにするコードでした。 以上です。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

VBAを使えば可能でしょうね。 BOOKを開いたら、以下の手順でやってみてください。 1.Alt+F11キーでVisualBasicEditorを呼び出します。 2.左側のプロジェクトウィンドウの中のVBAProject(ブック名)をクリック 3.シート名の下にあるThisWorkbookをクリックし、出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim a As Integer, b As Integer, n As Integer a = ThisWorkbook.Worksheets.Count For n = 1 To a If Worksheets(n).Name = ActiveSheet.Name Then b = n Next ActiveSheet.PageSetup.CenterFooter = b & "/" & a End Sub 4.Alt+F11キーでワークシートへもどります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelでシートを複数シート選択した場合の総ページ数に関して

    Excel 2003を使用しています。 Excelでページ番号をフッターに設定している場合について教えてください。 現在、Excelで  シート1:3ページ  シート2:5ページ といったようなファイルがあります。 それぞれのシートのフッターにページを振るための設定   「1 / ?」 → &[ページ番号] / &[総ページ数] ページ があります。 通常、一つのシートのみを印刷すれば、  -1. 1/3 , 2/3 , 3/3 -2. 1/5 , 2/5 ~ 5/5 と言ったような印刷になるのですが、ブック全体または、シートを 選択しての印刷をすると 1/7 , 2/7 ~ 7/7 となり、ページの分母が、各シートの合算になってしまっています。 シート毎で、開始Pageを”1”にし、分母を各シートの最終ページに することは可能なのでしょうか? まず、シート毎に開始ページを「1」にするには、ページ設定の先頭 ページ番号を「1」にするのは分かっているのですが、分母の総ページ をシート毎にする方法が分かりません。 やはり、フッターの編集で固定で設定しないといけないのでしょうか? 色々と探しているのですが、分かりません。 申し訳ありませんが、皆さん、宜しくお願い致します。    

  • EXCELでフッターにページ数

    EXCELでフッターにページ数を入れる時の質問です。 同ブック内の複数シートをまとめて印刷します。全体通してのページ番号と、シート内でのページとをフッターに印刷したいのですが、どうしたらよいでしょうか。 例)1シート目→1P   2シート目→3P   3シート目→1P ある場合、まとめて5ページ印刷し、 フッターには 1枚目→ 1、   2枚目→ 2-1/3、 3枚目→ 3-2/3、 4枚目→ 4-3/3、 5枚目→ 5 と、こんな感じに表示させたいのです。 2シート目のページ設定に &[ページ番号]/&[総ページ数]と設定すると 1枚目→ 1、   2枚目→ 2-2/5、 3枚目→ 3-3/5、 4枚目→ 4-4/5、 5枚目→ 5 となってしまいます。 わかる方、よろしくお願いいたします。  

  • Excelでのページ連番付与方法

    Excelでのページ連番付与方法 たくさんのシートがあるファイルがあります。 1シートのページ数は1ページであったり複数ページであったり色々です。 ファイルを印刷する際、選択したシートのフッターにページ連番を付け、なおかつ複数ページあるシートには枝番をつけたいのですが、可能でしょうか? 例)シート1  1ページ → 1    シート2  3ページ → 2-1/3 2-2/3 2-3/3   シート3  2ページ → 3-1/2 3-2/2   シート4  1ページ → 4   シート5  4ページ → 5-1/4 5-2/4 5-3/4 5-4/4 という感じでフッターに表示させたいと思っています。 よろしくお願いします。

  • エクセルで複数シートを選択して印刷した時のフッターで指定したページ番号について

    OSはXP、Officeは2003と2007を使っています。 エクセルに複数シートがあり、2ページ以上にまたがるシートに関しては ページ設定のフッター設定にて"1/?ページ"指定してあります。 印刷時に、複数シートを選択して印刷すると、シート内のページ数 印字になりません。 <例>1シート目には1ページ分のデータ   2シート目には2ページ分のデータ(フッター設定"1/?ページ") と、なっていたとして、印刷時、1,2シートを選んで印刷すると、 2枚目3枚目のフッター位置に2/3、3/3と印刷されてしまう。 ↑ これではなく、複数シートを選んだ状態でも、 2枚目3枚目のフッター位置に1/2、1/2と印刷したいのですが、無理ですか? 30シートほどあるので、1シートづつ印刷するのが面倒なのです。 1シート毎のページ割り振りにしたいのです。 方法はないですか?

  • エクセルのページ番号について質問です

    エクセルでシートが9枚でページとしては14枚です。 印刷をブック全体にしてもフッターのページ表示は 1/14から、通常では2ページなのに1/14、3ページなのに2/14とページ番号は各シート毎のページ数になってしまいます。 連続したページ番号にしたいです。どなたか教えてくださいお願いします

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

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

  • EXCELで表紙のフッターに頁数を入れず、2枚目から頁数を入れる

    1枚のSHEETに下方向に向かってA4サイズのデーターが30枚以上続いていて、1枚目は表紙扱いでフッターに頁数を入れず、2枚目からフッターに2と入れるようにする方法を「ページ設定」→「ヘッダー、フッター」→「フッターの編集」からできますか?WORDではありますがEXCELだと見当たりません。 ただプリントするだけなら2枚目以降をプリントしてから、フッターを消して1枚目をプリントすればいいのですが、EXCELごとメールで送り、受け手が更に頁数を増やし、その後にプリントするので、プリント方法の指示をするのではなくて、設定を入れて誰がプリントしても1枚目にはページ数が入らず、2枚から2・3・4・・・とふれるようにしておきたいのです。 どなたかいい方法がありましたら、教えて下さい。

  • Excelでページ数の表示について

    Excelで印刷をする時に、フッターにページ番号を入れたいのですが、 1ページ目と2ページ目には、ページ番号「1」を 3ページ目と4ページ目には、ページ番号「2」を 5ページ目と6ページ目には、ページ番号「3」を (中略) 999ページ目と1000ページ目には、ページ番号「500」を 入れるにはどうすれば良いですか? ページ数が多いので手入力にはしたくありません。

  • エクセルで印刷ページ数の制御

    CSV形式の抽出データをエクセルにコピーし、別のシートに必要なデータを参照(=Sheet2!A2)や、年齢計算などをして、印刷するのですが。 データ数が決まっておらず、印刷時に計算式が入っているため、自動では計算式が入っているセルまで印刷してしまうので。 現状では、印刷件数が1ページに10件分として45件なら5ページまでと手入力しているのですが、データ数から印刷ページ数を自動設定して印字するようなマクロなどよい方法は無いでしょうか? よろしくお願いします。

  • エクセル2007 ページ設定の固定

    いつもお世話になっております。 エクセル2007で、 sheet1に1ページ目、2ページ目、3ページ目 sheet2に4ページ目 sheet3に5ページ目、6ページ目 ・・・ と、続いているエクセルブックについて、 ページ数を振りたいと考えております。 全シートを選択し、ページ設定でフッターにページ数を設定しているのですが、 これでは、印刷する場合に、一度に全シート印刷しないと通しのページ数を保つことができなく、困っています。 例えば、4ページ目だけ印刷したい場合に、sheet2のみ印刷すると、 現状では「1ページ」として印刷されてしまいますが、 「4ページ」と印刷されるように設定したいと考えています。 いいアイデアはないでしょうか?

このQ&Aのポイント
  • ロシアのプーチン大統領がウクライナに侵攻した本当の理由は、プーチン大統領の宮殿建設等の私的に国のお金を使っていたことがバレて国民の支持率が下がったためです。
  • ウクライナ侵攻は、プーチン大統領の私的流用を揉み消すために実施された疑惑があります。
  • プーチン大統領の私的流用の金融情報を把握していたオルガルヒがウクライナ侵攻と同時に謎の死を遂げており、口封じのための暗殺ではないかと考えられます。
回答を見る

専門家に質問してみよう