【入門編】【実務中級】Presentation.SlideShowSettingsを操作し、特定の「カスタムスライドショー(NamedSlideShows)」をVBAから動的に作成・編集・実行する自動化手法 – PowerPoint VBA解析バイブル

スポンサーリンク

【PowerPoint VBA】カスタムスライドショーを「コードで自在に操る」極意:動的プレゼン生成術

こんにちは。現場で泥臭い自動化を積み重ねてきたエンジニアの視点から、今日はPowerPoint VBAの「真髄」とも言える領域に踏み込みます。

多くのユーザーは「スライドを手動で選んで、コピー&ペーストして別のファイルを作る」という不毛な作業に時間を溶かしています。しかし、PowerPointには「カスタムスライドショー」という強力な武器があります。これを使えば、元のファイルを汚さず、プレゼンの「見せ方」だけをプログラムで瞬時に切り替えることが可能です。

今回は、この機能をVBAで完全に掌握するためのステップを伝授しましょう。

1. なぜ「カスタムスライドショー」なのか?

実務の現場では、「A社向けにはこの3枚」「B社向けにはこの5枚」といった、情報の取捨選択が頻発します。
これを別々のファイルとして保存すると、後でスライドを修正したときに「全ファイルを直さなきゃいけない」という地獄が待っています。

カスタムスライドショーを活用すれば、データソースは常に1つ。
VBAは「どのスライドを見せるか」というリストだけを動的に生成します。これが、プロの自動化です。

2. アーキテクチャを理解する:オブジェクトの階層

まず、頭の中にこの階層図を叩き込んでください。

  • Application: PowerPointそのもの
  • Presentation: 開いているファイル
  • SlideShowSettings: プレゼンの設定(再生範囲や方法など)
  • NamedSlideShows: カスタムショーの「コレクション(一覧)」

この `NamedSlideShows` オブジェクトを操作することで、スライドの「プレイリスト」を自由に編集できるのです。

3. 実践:カスタムスライドショー自動構築コード

以下のコードは、現在開いているプレゼンテーションから、指定したスライド番号だけを抽出して「DynamicShow」という名前のカスタムショーを作成し、そのまま実行する実践的なスクリプトです。

Sub CreateAndRunDynamicShow()
Dim pptPres As Presentation
Dim customShows As NamedSlideShows
Dim slideIndices As Variant
Dim i As Long

Set pptPres = ActivePresentation
Set customShows = pptPres.SlideShowSettings.NamedSlideShows

‘ 1. 既存の同名ショーがあれば削除(エラー回避のため必須)
On Error Resume Next
customShows(“DynamicShow”).Delete
On Error GoTo 0

‘ 2. 抽出したいスライド番号を指定(ここでは1, 3, 5枚目を選択)
slideIndices = Array(1, 3, 5)

‘ 3. カスタムスライドショーの作成
‘ 第1引数: 名前、第2引数: スライド番号の配列
customShows.Add “DynamicShow”, slideIndices

‘ 4. スライドショーの設定を「カスタムショーの特定のもの」に変更
With pptPres.SlideShowSettings
.RangeType = ppShowNamedSlideShow
.SlideShowName = “DynamicShow”

‘ 5. 再生実行
.Run
End With
End Sub

コードの重要ポイント

  • `On Error Resume Next` の使い所: `Delete` メソッドは存在しない名前を指定するとエラーになります。あえてエラーを無視し、存在する場合のみ削除させるという「防御的プログラミング」です。
  • `RangeType = ppShowNamedSlideShow`: ここが肝です。デフォルトでは「全スライド再生」になっていますが、これをカスタムショー指定に切り替えることで初めて機能が有効化されます。

4. 陥りやすい罠と解決策

初学者が必ず突き当たる壁がいくつかあります。

1. 「スライド番号」はインデックス(位置)である:
スライドIDと勘違いしないでください。`slideIndices` に入れるのは、左側のスライド一覧における「上からの順番」です。
2. 配列の渡し方:
`Array()` 関数を使うのが最もスマートです。もし手動で構築したい場合は、Variant型の配列をあらかじめ作成して渡してください。
3. 実行後の戻し方:
このコードを実行すると、設定がカスタムショー固定になります。通常再生に戻したい場合は、`.RangeType = ppShowAll` に戻す処理が必要です。

5. 次のステップ:プロフェッショナルへの道

この自動化をマスターすれば、次は「Excelのリストから顧客名とスライド番号を読み込んで、自動的にカスタムショーを生成してPDF出力する」といった、「ハイパー・オートメーション」の世界が見えてきます。

PowerPoint VBAは、オブジェクトのライフサイクルを意識し、「何を操作しているのか」を明確にすれば、驚くほど安定して動きます。まずはこのコードをコピーし、自分の手元で動かしてみてください。

「動いた!」という感動が、あなたのエンジニアとしての第一歩です。何か詰まったら、いつでもまた聞きに来てくださいね。応援しています。

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