PowerPoint VBAで「無人ディスプレイ」を極める:SlideShowSettingsの真髄
こんにちは。業務自動化の現場で日々、泥臭い自動化コードと格闘しているエンジニアです。
皆さんは、展示会やオフィスの受付で、一日中淡々とスライドを流し続けるディスプレイを見たことはありませんか? あれを「手動で設定」していませんか? もしそうなら、それはVBAの力を借りていないだけです。
今回は、PowerPoint VBAの心臓部である`SlideShowSettings`を操作し、スライドショーを「完全自動運転」させる極意を伝授します。マクロの記録ボタンを押すだけの世界から、一歩先へ踏み出しましょう。
—
1. なぜ「SlideShowSettings」を制御するのか?
PowerPointのUI(画面)で設定できることは、VBAでもすべて制御可能です。しかし、VBAを使う本当の目的は「動的変更」にあります。
- 展示会: 時間帯によって見せるスライドを切り替えたい。
- 受付: 閉館時間になったら自動的にスライドショーを終了させたい。
- イベント: 特定の条件を満たした時だけ、特定のカスタムショーをループさせたい。
これらを可能にするのが、`Presentation.SlideShowSettings` オブジェクトです。
—
2. 実践コード:自動運転の設計図
まずは、キオスクモード(全画面表示、操作不可)で特定のカスタムショーをループ再生させるためのコードを見てみましょう。
Sub StartKioskMode()
Dim pptPres As Presentation
Set pptPres = ActivePresentation
‘ スライドショーの設定にアクセス
With pptPres.SlideShowSettings
‘ 1. 手動送りを禁止(キオスクモードの本質)
.AdvanceMode = ppSlideShowUseSlideTimings
‘ 2. ループ再生を有効化
.LoopUntilStopped = msoTrue
‘ 3. 特定のカスタムショーを指定(名前で指定)
.RangeType = ppShowNamedSlideShow
.SlideShowName = “展示用カスタムショー” ‘ あらかじめ作っておくこと!
‘ 4. 実行!
.Run
End With
End Sub
コードの深掘りポイント
- `AdvanceMode`: ここを `ppSlideShowUseSlideTimings` にすることで、スライドごとの切り替え時間を「各スライドの設定」に委ねます。
- `RangeType`: `ppShowAll`(全て)ではなく、`ppShowNamedSlideShow` を選ぶことで、特定のシーンだけを抜き出して運用できます。これが「プロの使い分け」です。
—
3. 初学者が必ずハマる「3つの罠」と対策
現場では、コードが合っていても動かないことがよくあります。以下の3点をクリアすれば、あなたはもう中級者です。
① 「カスタムショーの名前」が間違っている
コード内で指定した `SlideShowName` と、PowerPoint内の設定(スライドショータブ > カスタムスライドショー)にある名前が1文字でも違うとエラーになります。全角半角、スペースの有無を徹底的に確認してください。
② 手動操作との競合
`SlideShowSettings` は、あくまで「開始時の設定」を定義するものです。ショーが実行中に手動でスライドを送ってしまうと、意図しない挙動になることがあります。これを防ぐには、プレゼンテーション全体の「スライド切り替え」設定で「マウスでのクリック時」のチェックを外しておくのが賢い運用です。
③ オブジェクトの参照漏れ
`ActivePresentation` を多用しすぎないでください。複数のプレゼンテーションを開いていると、意図しないファイルでショーが始まるリスクがあります。
`Set pptPres = Presentations(“ファイル名.pptm”)` のように、明確にオブジェクトを特定する癖をつけましょう。
—
4. さらなる高みへ:イベントドリブンな制御
ここまでくれば基礎は完璧です。次に進むなら「イベント制御」を調べてみてください。
例えば、`SlideShowBegin` や `SlideShowNextSlide` といったイベントを使うと、「特定のスライドに到達した瞬間に、外部データを読み込んで図形を更新する」といった高度な自動化が可能になります。
PowerPointは単なる「プレゼンツール」ではなく、「動的なデジタルサイネージのプラットフォーム」になり得るのです。
—
まとめ
PowerPoint VBAの制御は、オブジェクトが「どこに所属しているか(Presentationなのか、Slideなのか)」という構造さえ見えてくれば、驚くほどシンプルに操れます。
1. SlideShowSettings でショーの「性格」を決める。
2. CustomShow で見せる「範囲」を限定する。
3. イベントハンドラ で「動き」を加える。
まずは、上記コードをコピーして、ご自身の手元のプレゼンテーションで実行してみてください。画面いっぱいに広がるスライドが、あなたの命令ひとつで動き出す快感は、エンジニア冥利に尽きる瞬間ですよ。
不明な点があれば、いつでも聞いてくださいね。あなたの自動化ライフを全力で応援しています!
