- ベストアンサー
VBAでヘッダーにページ設定
- VBAを使用して、シートA・B・C以外のページ数をヘッダーに表示するマクロを作成します。
- シートを追加しても、このマクロを使用してページ設定を再設定することができます。
- 複数のシートを選択して印刷する場合、正しいページ数が表示されない問題があります。どのような設定が必要でしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
なんとなく理解できました。 これでどうでしょう。 各シートに先頭ページ番号を指定して、ページ数自体は「&P」で出しています。 Sub Sample() 総ページ = 0 For Each sht In Worksheets sht.Select 総ページ = 総ページ + Application.ExecuteExcel4Macro("get.document(50)") Next ページ数 = 0 For Each sht In Worksheets If sht.Name <> "A" And sht.Name <> "B" And sht.Name <> "C" Then sht.Select sht.PageSetup.FirstPageNumber = ページ数 + 1 sht.PageSetup.RightHeader = "&""MS Pゴシック""&8&P/" + CStr(総ページ) ページ数 = ページ数 + Application.ExecuteExcel4Macro("get.document(50)") End If Next End Sub
その他の回答 (3)
- watabe007
- ベストアンサー率62% (476/760)
>複数のシートを選択して印刷をすると、ページ数がおかしくなります。 印刷もマクロで行えば For Each sh In ActiveWindow.SelectedSheets sh.PrintOut Preview:=True Next
- nao-y
- ベストアンサー率58% (111/190)
#1さんのコードでは意図していることができない、ということでしょうか? その、「意図されていること」がわからないのですが、、、 > ブックにシートが10枚あるとし、そのうちのシートA・B・Cを除いて、 > 残りのシートにページをシート順に表示させようと思います。 > ここでは1/7・2/7。。。というようにシートを1枚選択した場合でも、 > 総ページとページ数を表示させたいのです。 > シートが挿入されても総ページ数を取得して再設定できるようにしたのですが、 > 印刷時に質問のような問題が出てしまいました。 「質問のような問題」とは、以下のことですよね? > 印刷時にシートを1枚ずつ選択して印刷すると正しくページ数が表示されますが > 複数のシートを選択して印刷をすると、ページ数がおかしくなります。 > 複数シート選択時に正しいページ数で印刷できるようにするには この、「ページ数がおかしくなります」とは、具体的にどういうことですか? 「ページをシート順に表示させようと」ということと合わせると、 もしかして、次のような問題でしょうか? 左から、シートA・B・Cを除いて以下の順番でシートが並んでいる。 シート1、シート2、シート3、シート4 それぞれのシートは印刷するとページが2P、1P、3P、1Pの合計7Pになる。 本当は、 シート1の1ページ目:1/7、シート1の2ページ目:2/7 シート2の1ページ目:3/7 シート3の1ページ目:4/7、シート3の2ページ目:5/7、シート3の3ページ目:6/7 シート4の1ページ目:7/7 と表示させたいのに、例えば、 シート1の1ページ目:5/7、シート1の2ページ目:6/7 シート2の1ページ目:7/7 シート3の1ページ目:1/7、シート3の2ページ目:2/7、シート3の3ページ目:3/7 シート4の1ページ目:4/7 と表示されてしまう、ということでしょうか? だとすれば、For Eachの部分を For i=1 to Worksheets.Count (iはLong型で宣言)と書けば解決すると思いますが。。。 いずれにせよ、何が問題なのか説明不足だと思います。
- mt2008
- ベストアンサー率52% (885/1701)
単純にこういう事ではないのかな? Sub Sample() For Each sht In Worksheets If sht.Name <> "A" And sht.Name <> "B" And sht.Name <> "C" Then sht.PageSetup.RightHeader = "&P/&N" End If Next End Sub
補足
ありがとうございます。説明不足で申し訳ございません。 全てのシートを印刷する際に、通常でしたら複数選択したシートに順にページ番号が付きますが、1シートだけ選択した場合はページが1/1のようになってしまいます。 ブックにシートが10枚あるとし、そのうちのシートA・B・Cを除いて、残りのシートにページをシート順に表示させようと思います。ここでは1/7・2/7。。。というようにシートを1枚選択した場合でも、総ページとページ数を表示させたいのです。 シートが挿入されても総ページ数を取得して再設定できるようにしたのですが、印刷時に質問のような問題が出てしまいました。 ご教授の程、よろしくお願い致します。
お礼
回答いただきありがとうございます。 思い通りの動作を確認できました。 分かりにくい説明にもかかわらず、丁寧に解説いただき本当に助かりました。 ありがとうございました。