【入門編】【ヘッダー・フッター完全攻略】スライド、ノート、配布資料のそれぞれにおける日付・ページ番号・フッターの一括表示・非表示と個別テキスト制御 – PowerPoint VBA解析バイブル

スポンサーリンク

こんにちは。現場で血反吐を吐きながらスライド生成の自動化を極めたエンジニアとして、今日は君に「PowerPoint VBAの深淵」の一部を授けよう。

多くの初心者がここで挫折する。「なぜ、設定したはずのフッターが表示されないのか?」「なぜ、スライドとノートで設定の場所が違うのか?」と。

大丈夫。PowerPointのオブジェクトモデルは一見カオスだが、「3つの領地」さえ把握すれば、君はもう迷わない。さあ、深淵を覗きに行こうか。

1. PowerPointの「3つの領地」を理解せよ

PowerPointには、大きく分けて3つの出力先(領地)がある。これらは独立しており、それぞれに`HeadersFooters`という管理官が置かれているんだ。

1. スライド(Slide): プレゼン画面そのもの。
2. ノート(NotesPage): 発表者用のメモ領域。
3. 配布資料(Handout): 印刷物用のレイアウト領域。

これらは、`Presentation`オブジェクトの配下に、それぞれ別の管理体系を持っている。ここを混同するのが初心者が最初に陥る罠だ。

基本のアクセスルート

  • スライド: `ActivePresentation.SlideMaster.HeadersFooters` (全スライド一括制御)
  • ノート: `ActivePresentation.NotesMaster.HeadersFooters`
  • 配布資料: `ActivePresentation.HandoutMaster.HeadersFooters`

2. 【実践】スライドのフッターを完全制御する

まずは最も頻出する「スライドのフッター」だ。ここで重要なのは、「表示ON/OFF」「テキストの代入」は別物であるという点だ。

Sub ManageSlideFooters()
Dim pptPres As Presentation
Set pptPres = ActivePresentation

‘ スライドのヘッダー・フッター管理オブジェクトを取得
Dim hf As HeadersFooters
Set hf = pptPres.SlideMaster.HeadersFooters

‘ 1. フッターを有効にする
hf.Footer.Visible = msoTrue

‘ 2. フッターの内容を設定(個別のスライドではなくマスターで設定するのが鉄則)
hf.Footer.Text = “© 2023 Enterprise Architechs”

‘ 3. 日付とページ番号も有効化
hf.DateAndTime.Visible = msoTrue
hf.SlideNumber.Visible = msoTrue

‘ 【重要】タイトルスライドには表示しない設定
‘ これを忘れると「表紙にまでフッターが出る」というダサいミスが発生する
pptPres.Slides(1).DisplayMasterShapes = msoFalse
End Sub

3. なぜ「個別テキスト」は書き換わらないのか?

ここで君が次にぶつかる壁がこれだ。「特定の1枚だけフッターを変えたいのに、全部変わってしまう」。

PowerPointの`HeadersFooters`オブジェクトは、基本的に「マスター(雛形)」の設定を全スライドに強制適用する仕組みだ。個別に変えたい場合は、「マスターの鎖を断ち切る」必要がある。

Sub SetUniqueFooterOnSpecificSlide(slideIndex As Integer)
Dim sld As Slide
Set sld = ActivePresentation.Slides(slideIndex)

‘ マスターの設定を無視して個別に制御するフラグを立てる
sld.DisplayMasterShapes = msoTrue ‘ 一旦マスターを表示

‘ 個別のフッター設定を適用
‘ 注意:Shapesオブジェクトから直接「Footer」という名前のプレースホルダーを探す必要がある
Dim shp As Shape
For Each shp In sld.Shapes
If shp.Type = msoPlaceholder Then
If shp.PlaceholderFormat.Type = ppPlaceholderFooter Then
shp.TextFrame.TextRange.Text = “このスライドだけの限定フッター”
End If
End If
Next shp
End Sub

4. ノートと配布資料の罠

ノートと配布資料も基本は同じだが、アクセスするマスターが異なることだけ覚えておいてほしい。

| ターゲット | アクセス先 |
| :— | :— |
| スライド | `ActivePresentation.SlideMaster.HeadersFooters` |
| ノート | `ActivePresentation.NotesMaster.HeadersFooters` |
| 配布資料 | `ActivePresentation.HandoutMaster.HeadersFooters` |

もし「ノートにだけヘッダーを入れたい」なら、`NotesMaster`の`Header`プロパティを操作する。これさえ分かれば、君はもうPowerPointの「領主」だ。

5. 伝説のエンジニアからのアドバイス

君がこれから書くコードで、最も気をつけるべきは「実行順序」だ。

1. マスターで基本を作る: `SlideMaster`の設定で全体を整える。
2. 例外を処理する: `DisplayMasterShapes = msoFalse` を活用し、表紙や区切りで個別に制御する。
3. 最後に検証する: 画面上では見えていても、印刷プレビューで反映されないケースがある。`Application.PrintOptions`の設定も併せて確認する癖をつけておこう。

VBAは、単なる自動化ツールではない。君の思考をスライドに投影する「魔法の杖」だ。まずはこのコードをコピーして、自分の手元で動かしてみることから始めよう。

ここをクリアすれば、君はもう「マクロの記録」に頼る初心者ではない。自動化の未来へようこそ。何か詰まったら、いつでも聞きに来るといい。

タイトルとURLをコピーしました