【実務・中級編】スライドショーの自動運転をVBAで制御:”SlideShowSettings”によるループ再生、キオスクモード、特定スライド範囲の指定 – PowerPoint VBA解析バイブル

スポンサーリンク

【極限のVBA】展示会・受付を完全自動化する「スライドショー制御」の真髄

展示会場のデジタルサイネージやオフィスの受付用ディスプレイ。これらをPowerPointで運用している現場で、「スライドショーの設定を手動でカチカチ変更している」という光景を見るたびに、私はエンジニアとしての危機感を覚える。

手動設定はヒューマンエラーの温床だ。展示会初日の朝、設定ミスでスライドが止まっていたら?あるいは、機密情報が含まれるスライドが誤って投影されたら?

「自動化とは、人間の介在を最小化し、システムを信頼することである。」

今回は、PowerPoint VBAを用いてスライドショーの挙動を完全に掌握し、堅牢な自動運転環境を構築するための「戦術」を伝授する。

1. なぜ「設定画面」に触れてはいけないのか

多くのアマチュアエンジニアは、PowerPointのメニューから「スライドショーの設定」をGUIで変更しようとする。だが、プロの現場では「VBAで起動時に全設定を上書きする」のが鉄則だ。

環境によって異なるPC設定や、前任者が残した怪しい設定に依存してはならない。コードが実行された瞬間に、期待する状態(キオスクモード、ループ再生、特定範囲指定)を強制的に再定義する。これが「バグのない自動化」の第一歩だ。

2. 堅牢な自動運転を実装するプロダクションコード

以下のコードは、単なるサンプルではない。起動時に確実に動作を保証するための設計思想を詰め込んだモジュールだ。

Option Explicit

‘ ———————————————————
‘ 展示会・受付用:スライドショー自動制御モジュール
‘ 目的:設定に依存せず、特定の条件下で強制的にショーを開始する
‘ ———————————————————
Public Sub InitializeAndRunKioskMode()
Dim pptPres As Presentation
Set pptPres = ActivePresentation

‘ 1. 安全のために、既存のショーが動いていれば停止する
If pptPres.SlideShowWindow Is Not Nothing Then
pptPres.SlideShowWindow.View.Exit
End If

‘ 2. スライドショーの設定をコードで強制的に定義
With pptPres.SlideShowSettings
.ShowType = ppShowTypeKiosk ‘ キオスクモード(ESCキー無効化等)
.LoopUntilStopped = msoTrue ‘ ループ再生
.ShowAnimation = msoTrue ‘ アニメーション有効
.ShowNarration = msoTrue

‘ 特定のカスタムショーを指定する場合(なければ全スライド)
On Error Resume Next
.RangeType = ppShowNamedSlideShow
.SlideShowName = “自動再生用リスト” ‘ 事前に定義したカスタムショー名
If Err.Number <> 0 Then
.RangeType = ppShowAll
End If
On Error GoTo 0
End With

‘ 3. ショーの実行
pptPres.SlideShowSettings.Run
End Sub

このコードの重要ポイント

  • `.ShowType = ppShowTypeKiosk`: これが最も重要だ。ユーザーが誤ってESCキーを押してもショーが停止しない「キオスクモード」を強制する。
  • エラーハンドリング: `SlideShowName`が存在しない場合の例外処理を組み込んでいる。環境が変わっても停止しない頑強さを持たせることが肝要だ。
  • `ActivePresentation`の活用: マクロファイル自身を制御対象とすることで、配布後のファイル名変更にも柔軟に対応できる。

3. 運用を成功させるための「3つの規律」

コードを書くだけでは不十分だ。現場で生き残るシステムにするために、以下の規律を守ってほしい。

① データベース・外部ファイルとの疎結合

スライドの内容を頻繁に変更する場合、VBA内にデータを埋め込んではいけない。設定値(再生するスライドの範囲や時間)は、同じフォルダ内の `config.ini` や `settings.json` に逃がせ。VBAでそれらを読み込んでから `SlideShowSettings` に反映させるのが、保守性を高める唯一の解だ。

② 「起動時自動実行」の罠

`Auto_Open` や `Workbook_Open` 的なイベント(PowerPointの場合は `Auto_Open` マクロ)は便利だが、デバッグ時に「開いた瞬間にショーが始まって編集できない」という地獄を生む。

  • 対策: `Shift` キーを押しながらファイルを開くとマクロが無効になる仕様を理解しておくか、あるいは「起動時にメッセージボックスを出し、実行するか確認する」ロジックを必ず入れること。

③ ログの記録

展示会で「なぜか止まった」という報告を受けた時、何が起きたか分からなければエンジニア失格だ。ショーが開始された時間、終了した時間をテキストファイルに追記する関数を一つ噛ませるだけで、信頼性は劇的に向上する。

エンジニア諸君へ

PowerPoint VBAは、枯れた技術ではない。適切な設計を行えば、それは最強の「サイネージ制御エンジン」に化ける。

今回提示したコードをベースに、君たちの環境に合わせてカスタマイズしてほしい。大切なのは、「システムに何があっても、最後にはショーがループしている」という状態を作り出すことだ。

コードは嘘をつかない。論理的に組まれた自動化は、必ず君たちの業務を、そして展示会場を支える強固なバックボーンとなるはずだ。健闘を祈る。

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