📊 Excel VBA Top100
📋

AddHeaderFooter

シート管理

シートにヘッダーとフッターを追加する

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

AddHeaderFooter デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(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