📋
AddHeaderFooter
シート管理シートにヘッダーとフッターを追加する
ExcelシートにヘッダーとフッターをVBAで自動追加するマクロです。会社名・日付・ページ番号などの情報を印刷ヘッダーやフッターとして設定し、レポートや帳票の体裁を統一します。PageSetupオブジェクトを使って左・中央・右の3箇所にそれぞれカスタムテキストや自動フィールドコードを設定できます。複数シートへの一括適用も可能で、社内文書の標準フォーマット整備に最適です。内部ではPageSetup.LeftHeader・CenterHeader・RightHeaderの各プロパティに文字列を代入するだけのシンプルな構成で、Excel標準の「ページ設定」ダイアログの操作を完全に置き換えられます。ColorSheetTabsやAddNewSheetと組み合わせて全シート一括ループを行えば、シート追加からヘッダー設定までの初期化作業をワンステップで完結できます。

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 実行するとヘッダーとフッターの入力ダイアログが表示され、印刷プレビュー用のヘッダー/フッターが設定される
🎯 活用シーン
- ✓月次レポートへの会社名とページ番号の自動挿入
- ✓請求書や見積書の印刷フッターへの日付と担当者名の設定
- ✓全シート統一フォーマットでの社内資料の標準化
- ✓複数の帳票テンプレートに共通の会社情報ヘッダーを一括設定し、体裁を統一したいとき
- ✓監査提出用の資料に「社外秘」などのフッター注記を全シート一括で追加したいとき
💡 実装のヒント
- ▸&P でページ番号、&N で総ページ数、&D で日付を自動挿入できます
- ▸LeftHeader / CenterHeader / RightHeader プロパティで位置を指定します
- ▸複数シートに同じヘッダーを適用する場合はSheetsコレクションでループします
- ▸会社ロゴなど画像を挿入したい場合はLeftHeaderに&Gコードを使い、事前にヘッダー画像として登録しておく必要があります。
- ▸シートごとに異なるヘッダー内容にしたい場合は、シート名やインデックスをテキストに組み込む条件分岐を追加してください。
💻 VBAコード
' AddHeaderFooter
' -----------------
' Macro Name: AddHeaderFooter
' Description: シートにヘッダーとフッターを追加する
' Parameters: なし
' Returns: なし
' Usage: 実行するとヘッダーとフッターの入力ダイアログが表示され、印刷プレビュー用のヘッダー/フッターが設定される
' -----------------
Sub AddHeaderFooter()
Dim ws As Worksheet
Dim leftHeader As String
Dim centerHeader As String
Dim rightHeader As String
Dim leftFooter As String
Dim centerFooter As String
Dim rightFooter As String
Dim sheetName As String
On Error GoTo ErrorHandler
sheetName = InputBox("ヘッダー/フッターを設定するシート名を入力:", "ヘッダー/フッター設定", ActiveSheet.Name)
If sheetName = "" Then
Exit Sub
End If
On Error Resume Next
Set ws = Worksheets(sheetName)
On Error GoTo ErrorHandler
If ws Is Nothing Then
MsgBox "「" & sheetName & "」は存在しません。", vbExclamation
Exit Sub
End If
leftHeader = InputBox("左ヘッダーを入力 (空欄=設定なし):", "ヘッダー設定", ws.PageSetup.LeftHeader)
If leftHeader = "" Then ws.PageSetup.LeftHeader = ""
centerHeader = InputBox("中央ヘッダーを入力 (空欄=設定なし):", "ヘッダー設定", ws.PageSetup.CenterHeader)
If centerHeader = "" Then ws.PageSetup.CenterHeader = ""
rightHeader = InputBox("右ヘッダーを入力 (空欄=設定なし):", "ヘッダー設定", ws.PageSetup.RightHeader)
If rightHeader = "" Then ws.PageSetup.RightHeader = ""
leftFooter = InputBox("左フッターを入力 (空欄=設定なし):", "フッター設定", ws.PageSetup.LeftFooter)
If leftFooter = "" Then ws.PageSetup.LeftFooter = ""
centerFooter = InputBox("中央フッターを入力 (空欄=設定なし):", "フッター設定", ws.PageSetup.CenterFooter)
If centerFooter = "" Then ws.PageSetup.CenterFooter = ""
rightFooter = InputBox("右フッターを入力 (空欄=設定なし):", "フッター設定", ws.PageSetup.RightFooter)
If rightFooter = "" Then ws.PageSetup.RightFooter = ""
If leftHeader <> "" Then ws.PageSetup.LeftHeader = leftHeader
If centerHeader <> "" Then ws.PageSetup.CenterHeader = centerHeader
If rightHeader <> "" Then ws.PageSetup.RightHeader = rightHeader
If leftFooter <> "" Then ws.PageSetup.LeftFooter = leftFooter
If centerFooter <> "" Then ws.PageSetup.CenterFooter = centerFooter
If rightFooter <> "" Then ws.PageSetup.RightFooter = rightFooter
MsgBox "「" & sheetName & "」にヘッダー/フッターを設定しました。" & vbCrLf & "印刷プレビューで確認してください。", vbInformation
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub