[[20150630181055]] 『シート毎の子ページ数(枝ページ)数の印刷設定で』(トア) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シート毎の子ページ数(枝ページ)数の印刷設定できますか?』(トア)

お世話になっております。

●前提構成
全シートが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


マクロになりますが、よかったですか。
各シートのページ数を求めてから1ページずつ印刷です。

 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.