はじめに
フッターにページ番号を割り振りたい時、印刷したくないページがある場合や、別の印刷物に差し込みたい場合などで、ページ番号や総ページ数を独自に割り振りたい事があります。
ダイアログで設定できない方法でも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でないと無理なようです。 参考にしてみてください。