こんにちは!バックオフィスや店頭のデジタルサイネージ、あるいは無人受付のキオスク端末向けに「電源を入れたら勝手に始まり、終わったら永遠にループし続けるプレゼン」を作りたいと思ったことはありませんか?
「毎回手動で『スライドショーの設定』を開いて、キオスクモードにチェックを入れて……」なんて手作業、プロのエンジニアがやる仕事ではありません。すべてVBAのコード一発で設定し、うっかり編集されない「再生専用ファイル(.ppsx)」として書き出すのがスマートなエンジニアのやり方です。
今回は、PowerPoint VBAの心臓部である`SlideShowSettings`(スライドショーの設定)オブジェクトを完全に掌握し、キオスク端末向けに最適化された自動ループプレゼンテーションを構築する方法を、優しく、そしてディープに解説していきます。
ここをクリアすれば、あなたもPowerPoint VBAの基本をマスターしたと言ってバッチリです!
—
なぜ「手動設定」ではなく「VBA」なのか?
展示会や店舗のディスプレイで使われるキオスク端末。ここで最も恐ろしいのは、「誰かがマウスを触ってしまい、設定が狂うこと」「夜間にPCが再起動したあと、スライドショーが止まってしまうこと」です。
これを防ぐためには、PowerPointのファイル自体に「私はキオスク端末専用です。勝手にループし、ユーザーの勝手な操作を受け付けません」というDNAをプログラムで書き込む必要があります。
それを実現するのが、PowerPoint VBAの `SlideShowSettings` です。
—
1. 攻略の鍵:`SlideShowSettings` の全貌
PowerPointのスライドショー挙動は、すべて `ActivePresentation.SlideShowSettings` というオブジェクトの中に詰まっています。
キオスク端末向けに設定すべき主なプロパティは以下の3つです。
1. `ShowType` : プレゼンの表示形式(ウインドウか、全画面か、キオスクか)
2. `LoopUntilStopped` : 「エスケープキーが押されるまで継続的にループする」フラグ
3. `AdvanceMode` : スライドの切り替えタイミング(手動か、ナレーション/タイミングに従うか)
これらをコードでどう表現するのか、実際のプロシージャを見てみましょう。
—
2. 実装コード:キオスク最適化マクロ
以下のコードを、PowerPointのVBAエディタ(`Alt + F11` で起動)の標準モジュールに貼り付けて実行してください。
現在のプレゼンテーションをキオスク仕様に調教し、デスクトップに `.ppsx` として保存する完全版のスクリプトです。
Sub OptimizeForKioskDisplay()
Dim pptDoc As Presentation
Dim savePath As String
‘ 現在アクティブなプレゼンテーションを対象にする
Set pptDoc = ActivePresentation
‘ エラー対策:スライドが1枚もない場合は処理を中断
If pptDoc.Slides.Count = 0 Then
MsgBox “スライドが1枚も存在しません。処理を中止します。”, vbCritical, “エラー”
Exit Sub
End If
‘ ==========================================
‘ 1. スライドショーの設定(Kiosk最適化)
‘ ==========================================
With pptDoc.SlideShowSettings
‘ ① プレゼンの形式を「キオスクモード(ウインドウなし・全画面・操作制限)」に設定
‘ ※ ppShowTypeKiosk を指定することで、右クリックメニューなども無効化されます
.ShowType = ppShowTypeKiosk
‘ ② 「ESCキーが押されるまで継続的にループする」を有効化
.LoopUntilStopped = msoTrue
‘ ③ スライドの切り替えタイミングを「保存されているタイミングを使用」にする
‘ (自動再生させるためには、各スライドの「画面切り替え」タブで「H秒後に切り替え」を設定しておく必要があります)
.AdvanceMode = ppSlideShowUseSlideTimings
‘ ④ スライド範囲の指定(全スライドを対象)
.StartingSlide = 1
.EndingSlide = pptDoc.Slides.Count
End With
‘ ==========================================
‘ 2. 再生専用ファイル(.ppsx)としての保存
‘ ==========================================
‘ 保存先のパスをデスクトップの「KioskPresentation.ppsx」に指定
savePath = CreateObject(“WScript.Shell”).SpecialFolders(“Desktop”) & “\KioskPresentation.ppsx”
‘ 既存の同名ファイルがある場合は上書き保存するためにアラートを一時停止
Application.DisplayAlerts = False
‘ ppSaveAsShow を指定して保存することで、開いた瞬間に編集モードではなく
‘ スライドショーが直接始まる「PowerPointショー形式(.ppsx)」で出力されます
pptDoc.SaveAs FileName:=savePath, FileFormat:=ppSaveAsShow
Application.DisplayAlerts = True
‘ 完了メッセージ
MsgBox “キオスク端末向けの設定が完了しました!” & vbCrLf & _
“保存先: ” & savePath, vbInformation, “処理成功”
End Sub
—
3. コードの注目ポイント・初心者が見落としがちな罠
このコードには、実務で絶対に知っておくべき「PowerPoint VBAならではの罠」を回避する知見が詰まっています。
① `.ppsx`(PowerPointショー)で保存する魔法
コード内の `ppSaveAsShow` というファイルフォーマットを指定している点に注目してください。
通常の `.pptx` で保存してしまうと、ファイルをダブルクリックしたときに編集画面(Normal View)が開いてしまいます。しかし、`.ppsx` で保存すれば、ダブルクリックした瞬間に問答無用でフルスクリーンのスライドショーが起動します。キオスク端末には必須の仕様です。
② キオスクモード(`ppShowTypeKiosk`)の強力な効果
`ppShowTypeKiosk` を設定すると、通常のフルスクリーン(`ppShowTypeFullScreen`)とは異なり、画面右クリック時のメニューが出なくなり、タイトルバーやウィンドウ枠も完全に消去されます。ユーザーが余計な操作をしてプレゼンを壊すリスクをゼロにできます。
③ 自動再生させるための「大前提」
VBAでループ設定をしても、肝心の「スライドが何秒で切り替わるか」のタイミングが設定されていなければ、プレゼンは進みません。
コード内の `.AdvanceMode = ppSlideShowUseSlideTimings` は、「各スライドに設定された切り替え時間に従う」という意味です。
事前にPowerPointの「画面切り替え」タブ >「画面切り替えのタイミング」>「アフター」にチェックを入れ、例えば「5秒後」などに設定しておくことを忘れないでください。
—
まとめ:自動化のロマンをその手に
今回は、PowerPoint VBAを使ってスライドショーをキオスク端末向けに最適化し、専用の再生ファイルとして書き出す手法を解説しました。
「設定画面をポチポチクリックする」というアナログな作業から解放され、コード一発で完璧な環境を作り上げる。これこそがプログラミングの醍醐味であり、業務自動化エンジニアのロマンです。
この知見をベースに、例えば「Excelのリストから自動でスライドを生成し、キオスク用として出力する全自動バッチ」などに発展させてみるのも面白いでしょう。
あなたのプレゼンテーション自動化の旅が、ここからさらに加速することを応援しています!
