VBAから印刷時のヘッダ・フッタを設定する

印刷

はじめに

 印刷時にヘッダ・フッタにセルの値をセットしたい時のように、プログラミングで値をセットしたい場合は、標準モジュールやシートモジュールでなく、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-[数値]ページ番号に[数値]を減算
&GGraphicオブジェクト
&&アンパサンド
タイトルとURLをコピーしました