はじめに
印刷時にヘッダ・フッタにセルの値をセットしたい時のように、プログラミングで値をセットしたい場合は、標準モジュールやシートモジュールでなく、ThisWorkbookモジュールを使う事になります。
これは、印刷時のヘッダ・フッタの設定が、「BeforePrint」というThisWorkbookのイベントで呼ばれるためです。
手順としては、ThisWorkbookから、イベントであるWorkbook_BeforePrint関数を呼び出して、この中で
ActiveSheet.PageSetup.RightHeader = “&P/&N “
などとプロパティを設定すればOKです。

サンプルコード
'ThisWorkbookのイベントBeforePrint
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'印刷時のページセットアップ
With ActiveSheet.PageSetup
'先頭ページのみ他ページと異なるヘッダーおよびフッターを設定するか?
.DifferentFirstPageHeaderFooter = True
'先頭ページヘッダー・フッター設定
.FirstPage.CenterHeader.Text = "最初のページだけに付くよ!"
.FirstPage.CenterFooter.Text = "最初のページだけに付いたよ!!"
'先頭ページ以外の設定
.LeftHeader = Range("A2")
.CenterHeader = Range("B2")
.RightHeader = Range("C2")
.LeftFooter = Range("D2")
.CenterFooter = "&P/&N" '現在のページ / 全ページ数
.RightFooter = Range("E2")
End With
End Sub
ThisWorkbookのイベントのBeforePrint関数にコードを書いていきます。
アクティブシートの PageSetupオブジェクトのプロパティに値をセットしていく形です。
先頭のページのみ他のヘッダ・フッタと異なる値を設定したい場合は、
.DifferentFirstPageHeaderFooter = True
としてやります。続いて、最初のページにセットする値を代入します。
尚、全て同じ形式にしたい場合は、ここの記述は不要となります。
続いて、その他のページのヘッダ・フッタの値をセットしています。
VBAでプログラミングする場合は、セルの値などをセットできます。また、以下で示すように日付やページ番号などのコードをセットすることも可能です。
上記のプログラムを実行すると以下のようになります。


使用するプロパティ
ヘッダ・フッタの位置を示すプロパティと、セットするプロパティ値で使えるコードは以下の通りです。
ヘッダ・フッタの位置を示すプロパティ
LeftHeader | 左側のヘッダーに設定したい内容設定 |
CenterHeader | 中央部のヘッダーに設定したい内容設定 |
RightHeader | 右側のヘッダーに設定したい内容設定 |
LeftFooter | 左側のフッターに設定したい内容設定 |
CenterFooter | 中央部のフッターに設定したい内容設定 |
RightFooter | 右側のフッターに設定したい内容設定 |
ヘッダ・フッタに設定できるコード
&D | 現在の日付 |
&T | 現在の時刻 |
&A | シート見出し |
&F | ファイル名 |
&Z | ファイルパス |
&N | ファイルのページ数 |
&P | ページ番号 |
&P+[数値] | ページ番号に[数値]を加算 |
&P-[数値] | ページ番号に[数値]を減算 |
&G | Graphicオブジェクト |
&& | アンパサンド |