フッターのページ番号を自由に割り振る

中級VBA

はじめに

 フッターにページ番号を割り振りたい時、印刷したくないページがある場合や、別の印刷物に差し込みたい場合などで、ページ番号や総ページ数を独自に割り振りたい事があります。
 ダイアログで設定できない方法でもVBAを使えば自分でページ数を割り振ることが出来るようになります。

基本的なページの割り振り

 フッター(中央)の値は、シートオブジェクト毎に、PageSetup.CenterFooterにセットされます。
 現在のページ数は、&P
 ページ総数は、&N

に割り当てられていますので以下のようにすれば、フッター中央に、「ページ数 / ページ総数」という形式で表示されます。

Sub myPrint()
    Dim ws
    For Each ws In Worksheets
        ws.PageSetup.CenterFooter = "&P / &N"
    Next ws
End Sub

個別でページを割り振る

 自分で自由にページ数を割り振りたければ、各シート毎に変数で値を入れていけば良いでしょう。
 フッター表示をしなくない場合は、シート名で区別して除外するような事も出来ます。
 
 以下の例では、「メニュー」というシートを除外してその他のシートに「ページ数 / ページ総数」を入力しています。

Sub myPrint()
    Dim ws
    Dim cnt  As Long
    cnt = 1
    For Each ws In Worksheets
        If ws.Name <> "メニュー" Then
            ws.PageSetup.CenterFooter = cnt & " / " & Worksheets.Count - 1
            cnt = cnt + 1
        End If
    Next ws

End Sub

 結果は以下のようになりました。総ページ数は 4 ですが、 2ページ目から、1/3, 2/3, 3/3 と割り振られています。

フッターの文字サイズ変更

 フッター文字のサイズを変えたい時はPageSetup.CenterFooter の冒頭に “&16 “ などとフォントサイズを追加します。最後に空白が入るので注意してください。

Sub myPrint()
    Dim ws
    Dim cnt  As Long
    cnt = 1
    For Each ws In Worksheets
        If ws.Name <> "メニュー" Then
            ws.PageSetup.CenterFooter = "&16 " & cnt & " / " & Worksheets.Count - 1
            cnt = cnt + 1
        End If
    Next ws

End Sub

まとめ

 印刷時のページの割り振りはダイアログからでも出来ますが、不要なページの割り振りを抜くという操作はVBAでないと無理なようです。 参考にしてみてください。

タイトルとURLをコピーしました