こんにちは、Ryoです。
Excelなどで印刷する際にヘッダーやフッターを適宜利用して情報を追加することも多いかと思いますが、手動で設定しなくてもVBAで印刷処理に合わせて処理することもできます。今回はヘッダーやフッターの設定方法、印刷対象の配置などについて書いていきます。
1.サンプル概要
先ず印刷サンプルとして適当な表を「Sheet2」に作成しています。

この表に対しヘッダーとフッターの設定を行います。ヘッダー設定としては左ヘッダーに「日付」、中央ヘッダーに「ファイル名」、右ヘッダーに「シート見出し名」を表示させます。フッター設定は左フッターに「下線付き指定文字列」、中央フッターに「ページ番号/ページ総数」、右フッターに「時刻」を表示します。

≪ヘッダー設定≫

≪フッター設定≫

以上がサンプル概要になります。
2.サンプルコード
Sub Sample1()
'***ヘッダー・フッターの取得/設定***
'Sheet2のページ設定に対する処理
With Worksheets("sheet2").PageSetup
'***ヘッダー処理*****************
'左ヘッダーに「日付」を設定
.LeftHeader = "&D"
'中央ヘッダーに「ファイル名」を設定
.CenterHeader = "&F"
'右ヘッダーに「シートの見出し名」を設定
.RightHeader = "&A"
'**************************
'***フッター処理*****************
'左フッターに指定文字列を下線付きで設定
.LeftFooter = "&Uヘッダー/フッターの取得、設定"
'中央フッターに「ページ番号」と「総ページ数」を設定
.CenterFooter = "&P/&N"
'右フッターに「時刻」を設定
.RightFooter = "印刷時刻:&T"
'**************************
'印刷位置を水平方向の中央に配置
.CenterHorizontally = True
'※参考:印刷位置を垂直方向の中央配置にするには
' .CenterVertically =TrueとすればOK
End With
'印刷プレビューを表示
Worksheets("sheet2").PrintPreview
End Sub
ヘッダーの情報取得・設定を行う場合は「LeftHeaderプロパティ」「CenterHeaderプロパティ」「RightHeaderプロパティ」を利用します。
構文:オブジェクト.LeftHeader/CenterHeader/RightHeader =expression
フッターの情報取得・設定については「LeftFooterプロパティ」「CenterFooterプロパティ」「RightFooterプロパティ」を利用します。
構文:オブジェクト.LeftFooter/CenterFooter/RightFooter =expression
設定する値については以下の通りです。
≪ヘッダー・フッターに設定する値≫
| コード | 内容 |
| &L | このコードに続く文字列を左詰めに配置 |
| &C | このコードに続く文字列を中央揃えに配置 |
| &R | このコードに続く文字列を右詰めに配置 |
| &E | 文字列を二重下線付きで印刷 |
| &X | 上付き文字を印刷 |
| &Y | 下付き文字を印刷 |
| &B | 文字列を太字で印刷 |
| &I | 文字列を斜体で印刷 |
| &U | 文字列を下線付きで印刷 |
| &S | 文字列を取り消し線付きで印刷 |
| &”フォント名” | 指定フォントで文字を印刷 |
| &nn | 指定フォントサイズで文字を印刷。「nn」にはポイント数を表す2桁の数値を指定 |
| &color | 文字を指定された色で印刷。16進数の色の値を指定(例:赤なら&H0000FF) |
| &”+” | 現在のテーマの「見出し」フォントで文字を印刷(Excel2007以降) |
| &”-“ | 現在のテーマの「本文」フォントで文字を印刷(Excel2007以降) |
| &Kxx.Syyy | 現在のテーマの指定した色で文字を印刷。「xx」は使用するテーマの色を指定する2桁の数値(1~12)、「Syyy」はテーマの色の網掛け(濃淡)を指定(Sは+または-、yyyは0~100)※Excel2007以降 |
| &D | 現在の日付を印刷 |
| &T | 現在の時刻を印刷 |
| &F | ファイルの名前を印刷 |
| &A | シート見出し名を印刷 |
| &P | ページ番号を印刷 |
| &P+<数値> | ページ番号に指定した<数値>を加算した値を印刷 |
| &P-<数値> | ページ番号から指定した<数値>を減算した値を印刷 |
| && | アンパサンド(&)を1つ印刷 |
| &N | ファイルの全てのページ数を印刷 |
| &Z | ファイルパスを印刷 |
| &G | イメージを挿入 |
上表に基づきサンプルコードではヘッダー設定としては左ヘッダーに「日付」=”&D”、中央ヘッダーに「ファイル名」=”&F”、右ヘッダーに「シート見出し名」=”&A”を指定しています。
フッターについては左フッターに「下線付き指定文字列」=”&Uヘッダー/フッターの取得、設定”、中央フッターに「ページ番号/ページ総数」=”&P/&N”、右フッターに「時刻」=”印刷時刻:&T”を指定することで表示させています。
◆参考:印刷位置をページ中央に設定
コード内に記述している印刷位置は見栄え的な部分の処理なのでヘッダー・フッターとは関係ないのですが知っておくと便利です。水平方向の中央位置に印刷対象を配置したい場合はCenterHorizontallyプロパティ、垂直方向の中央位置であればCenterVerticallyプロパティを利用します。
構文:オブジェクト.CenterHorizontally/CenterVertically =expression
印刷バランスの調整などには有用なのでご参考までに。
3.まとめ
私の場合はVBAの処理でデータ収集~整理、指定様式へ反映して印刷出力という流れの処理を扱うことが結構多いので、その中でヘッダーやフッターを設定することがありますから、何をどう指定するかを知っておくと有用なことも多いと思います。
但し、あまりヘッダーやフッターの情報過多になると印刷出力内容が見難くなることもありますので、ご利用は計画的に。
以上、ヘッダーやフッターを取得/設定する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo

