[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート毎の子ページ数(枝ページ)数の印刷設定できますか?』(トア)
お世話になっております。
●前提構成
全シートが10シート
総印刷ページ数が30ページ
各シートの印刷ページ枚数がバラバラ
全てのシートの1行目が印刷タイトルで設定
上記条件のデータがあります。
フッターに ページ数/総ページ数 を表示させています。
ヘッターもしくは 印刷タイトル行に
[シート名 シート内ページ番号/シート内総ページ]
を表示させる方法はないでしょうか?
参考
シート/印刷ページ数/シートページ番号/シート内総ページ/ページ数/総ページ
sheet1/5ページ/1~/5/1~/30
sheet2/8ページ/1~/8/6~/30
sheet3/2ページ/1~/2/14~/30
上手く説明できているかわかりませんが何か方法はありますでしょうか。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
とりあえず印刷総ページを取得するサンプルです。
Sub Test() Dim sh As Worksheet Dim tot As Long Dim pgsH As Long Dim pgb As Object
For Each sh In Worksheets pgsH = sh.HPageBreaks.Count If pgsH = 0 Then pgsH = 1 Else Set pgb = sh.HPageBreaks(sh.HPageBreaks.Count) If sh.Range("A1", sh.UsedRange).Rows.Count > pgb.Location.Offset(-1).Row Then pgsH = pgsH + 1 End If tot = tot + pgsH Next
MsgBox tot
End Sub
(β) 2015/06/30(火) 20:57
Sub test() Dim シート数 As Long Dim シートページ番号 As Long Dim シート内総ページ() As Long Dim ページ番号 As Long Dim 総ページ As Long Dim シート番号 As Long Dim ws As Worksheet
シート数 = Worksheets.Count
ReDim シート内総ページ(1 To シート数)
For Each ws In ActiveWindow.SelectedSheets シート番号 = ws.Index シート内総ページ(シート番号) = ws.PageSetup.Pages.Count 総ページ = 総ページ + シート内総ページ(シート番号) Next
For Each ws In ActiveWindow.SelectedSheets シート番号 = ws.Index For シートページ番号 = 1 To シート内総ページ(シート番号) ページ番号 = ページ番号 + 1 MsgBox シートページ番号 & "/" & シート内総ページ(シート番号) & "/" & ページ番号 & "/" & 総ページ ws.PrintOut from:=シートページ番号, to:=シートページ番号 Next Next
End Sub
(マナ) 2015/06/30(火) 20:59
いつもお世話になっております。
β様
HPageBreaksというオブジェクトを初めて知りました。
ありがとうございます。
マナ様
完璧でした。
配列の部分がまだ完全に理解できていないですが、
1枚1枚印刷して、それをfor eachで繰り返すという着眼点がとても参考になりました。
ws.PageSetup.LeftHeader = シートページ番号 & "/" & シート内総ページ(シート番号)
ws.PageSetup.CenterFooter = ページ番号 & "/" & 総ページ
でヘッダー、フッターそれぞれに毎回設定する事で、希望通りの出力ができました。
お二方ともありがとうございました。
(トア) 2015/07/01(水) 14:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.