皆さん、こんにちは!Excel VBA講師の〇〇です。
本日は、ビジネス文書作成において非常に重要でありながら、意外と手間がかかる「ページ番号とヘッダー・フッターの設定」について、VBAを使った自動化の極意をお伝えします。
皆さんはExcelで作成した資料を印刷する際、毎回手動でページ設定ダイアログを開き、ヘッダーやフッターに「ページ番号」「日付」「ファイル名」などを設定していませんか?たった数枚の資料であればまだしも、数十枚にわたる報告書や、複数のシートにまたがる資料を作成するたびにこの作業を繰り返すのは、非常に非効率的でミスの元にもなりかねません。
しかし、ご安心ください。VBAを使えば、これらの設定を瞬時に、そして正確に自動化することが可能です。一度マクロを作成してしまえば、あとはボタン一つで、プロフェッショナルな印刷設定が完了します。これにより、資料の品質向上はもちろん、皆さんの貴重な時間を大幅に節約することができるでしょう。
本レッスンでは、Excelの`PageSetup`オブジェクトを徹底的に掘り下げ、ページ番号の付与、ヘッダー・フッターへの情報挿入、さらにはフォントの書式設定や応用的な設定まで、幅広く解説していきます。さあ、一緒にVBAによる印刷自動化の世界へ飛び込みましょう!
なぜページ番号とヘッダー・フッターの設定が重要なのか
ビジネスシーンにおいて、印刷物はしばしば会社の顔となります。顧客への提案書、社内での報告書、会議資料など、どのような文書であれ、その体裁は受け取る側の印象に大きく影響します。
* **情報の整理と管理:** ページ番号が付与されていれば、資料の欠落を防ぎ、参照しやすくなります。日付やファイル名が記載されていれば、バージョン管理や検索が容易になります。
* **プロフェッショナリズムの演出:** 整然としたヘッダー・フッターは、作成者の細やかな配慮とプロ意識を伝えることができます。これにより、文書全体の信頼性が向上します。
* **法的・規則的要件:** 企業によっては、特定の情報(例: 機密区分、作成者名)を印刷物に含めることが義務付けられている場合があります。
これらの重要性を踏まえると、手動での設定は非効率的であり、VBAによる自動化はもはや必須のスキルと言えるでしょう。
Excelにおけるヘッダー・フッターの基礎知識
VBAでヘッダー・フッターを操作する前に、まずはExcelのヘッダー・フッターがどのように構成されているかを理解しておきましょう。
Excelのヘッダー(ページ上部)とフッター(ページ下部)は、それぞれ「左セクション」「中央セクション」「右セクション」の3つの領域に分かれています。これらの領域に、テキストや特殊コード(ページ番号、日付など)、さらには画像を挿入することができます。
VBAでは、シートの印刷設定を管理する`PageSetup`オブジェクトを通じて、これらのヘッダー・フッターを操作します。`PageSetup`オブジェクトは、特定のワークシートに紐づいており、以下のようにアクセスします。
‘ アクティブなシートのPageSetupオブジェクト
ActiveSheet.PageSetup
‘ 特定のシートのPageSetupオブジェクト
Worksheets(“シート名”).PageSetup
そして、ヘッダー・フッターの各セクションは、`PageSetup`オブジェクトの以下のプロパティに対応しています。
* `LeftHeader`: 左ヘッダー
* `CenterHeader`: 中央ヘッダー
* `RightHeader`: 右ヘッダー
* `LeftFooter`: 左フッター
* `CenterFooter`: 中央フッター
* `RightFooter`: 右フッター
これらのプロパティに文字列を代入することで、ヘッダー・フッターの内容を設定できます。
VBAでのヘッダー・フッター設定:基本編
それでは、実際にVBAを使ってヘッダー・フッターを設定してみましょう。まずは、最も基本的な設定から始めます。
基本的なコード例
以下のコードは、アクティブシートの中央ヘッダーに会社名、右フッターに「ページ番号 / 総ページ数」を設定する例です。
Sub SetBasicHeadersFooters()
‘ アクティブシートのPageSetupオブジェクトを操作
With ActiveSheet.PageSetup
‘ 中央ヘッダーに会社名を設定
.CenterHeader = “〇〇株式会社 内部資料”
‘ 右フッターに「ページ番号 / 総ページ数」を設定
‘ &P は現在のページ番号、&N は総ページ数を表す特殊コードです。
.RightFooter = “ページ &P / &N”
End With
‘ 設定が完了したことをユーザーに通知
MsgBox “基本的なヘッダーとフッターの設定が完了しました。”, vbInformation
‘ 印刷プレビューで確認する習慣をつけましょう
‘ ActiveWindow.SelectedSheets.PrintPreview
End Sub
このコードを実行すると、アクティブシートの印刷設定が変更され、印刷プレビューで確認できるようになります。`&P`や`&N`のような記号は「特殊コード」と呼ばれ、Excelが自動的に適切な値に置き換えてくれます。
頻繁に使う特殊コード一覧
ヘッダー・フッターで利用できる特殊コードは他にもたくさんあります。これらを活用することで、より動的で情報豊富なヘッダー・フッターを作成できます。
* `&P`: 現在のページ番号
* `&N`: 総ページ数
* `&F`: ファイル名(拡張子付き)
* `&A`: シート名
* `&D`: 現在の日付
* `&T`: 現在の時刻
* `&Z`: ファイルパス
* `&G`: 画像の挿入(VBAからは直接指定できませんが、概念として存在)
これらの特殊コードは、文字列の中に直接含めることができます。
フォントの書式設定
ヘッダー・フッターのテキストには、フォントの種類、サイズ、スタイル(太字、斜体など)も指定できます。VBAでは、特殊コードを使ってこれらの書式を設定します。
* `&”フォント名,フォントサイズ”`: フォントの種類とサイズを指定します。例: `&”MS Pゴシック,12″`
* `&B`: 太字(Bold)
* `&I`: 斜体(Italic)
* `&U`: 下線(Underline)
* `&S`: 取り消し線(Strikethrough)
* `&K`: フォント色(テーマカラーインデックスで指定。直接RGB値は難しい)
これらの書式設定は、適用したいテキストの直前に記述します。
Sub SetFormattedHeadersFooters()
With ActiveSheet.PageSetup
‘ 中央ヘッダーに会社名を太字14ptのMS Pゴシックで設定
‘ 文字列中にダブルクォーテーションを含める場合、Chr(34) を使用すると便利です。
.CenterHeader = “&B&” & Chr(34) & “MS Pゴシック,14” & Chr(34) & “〇〇株式会社 報告書”
‘ 左フッターにファイルパスとファイル名をArial 10ptで設定
.LeftFooter = “&” & Chr(34) & “Arial,10” & Chr(34) & “&Z&F”
‘ 右フッターに現在の日付と時刻を斜体で設定
.RightFooter = “&I&D &T”
End With
MsgBox “書式設定を含むヘッダーとフッターの設定が完了しました。”, vbInformation
End Sub
**ポイント:** VBAの文字列内でダブルクォーテーション`”`を記述したい場合、通常は`””`と二つ重ねてエスケープしますが、`Chr(34)`を使うとコードが読みやすくなることがあります。
VBAでのヘッダー・フッター設定:応用編
さらに高度な設定として、奇数/偶数ページで異なるヘッダー・フッターを設定したり、先頭ページのみ
