【入門編】【中級者】スライドショーの設定(自動プレゼンテーション、ループ再生)をプログラムで埋め込み、キオスク端末向けに最適化して保存するマクロ – PowerPoint VBA解析バイブル

スポンサーリンク

こんにちは!バックオフィスや店頭のデジタルサイネージ、あるいは無人受付のキオスク端末向けに「電源を入れたら勝手に始まり、終わったら永遠にループし続けるプレゼン」を作りたいと思ったことはありませんか?

「毎回手動で『スライドショーの設定』を開いて、キオスクモードにチェックを入れて……」なんて手作業、プロのエンジニアがやる仕事ではありません。すべて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のリストから自動でスライドを生成し、キオスク用として出力する全自動バッチ」などに発展させてみるのも面白いでしょう。

あなたのプレゼンテーション自動化の旅が、ここからさらに加速することを応援しています!

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