【PowerPoint VBA】全スライドの動画を「自動再生&ループ」に一括設定するマクロ
PowerPointで大量の動画をスライドに貼った後、一つずつ「再生ボタンを押さずに自動で開始」「終わったらループ再生」と設定していくのは、おじさんには正直キツイ作業ですよね。

「ChatGPTにコードを書いてもらったけど、なぜか自動再生にならない!」という知恵袋の質問をきっかけに、確実に動くコードをデバッグしてみました。同じ悩みを持つ方の備忘録になれば幸いです。
動画での解説はこちら
[00:00](https://www.youtube.com/watch?v=4Dw5WpEWq_I&t=0s) 導入・やりたいことのテスト
[01:08](https://www.youtube.com/watch?v=4Dw5WpEWq_I&t=68s) 不具合確認(ループはOKだが自動再生がNG)
[03:23](https://www.youtube.com/watch?v=4Dw5WpEWq_I&t=203s) 改善案:アニメーションのTriggerTypeを操作する
[08:17](https://www.youtube.com/watch?v=4Dw5WpEWq_I&t=497s) 落とし穴!AnimationOrderを0(先頭)にする重要性
[12:51](https://www.youtube.com/watch?v=4Dw5WpEWq_I&t=771s) 完成したソースの再テスト
-
- -
今回作成した完成版VBAソースコード
ChatGPTが生成したコードに、''「アニメーションの順番を先頭にする」''処理と''「開始タイミングを直前の動作と同時にする」''処理を追加した完成版です。
Sub AutoPlayAndLoopVideos_Fixed()
Dim slide As slide
Dim shp As Shape
Dim objTimeLine As PowerPoint.TimeLine
Dim objEffect As PowerPoint.Effect
' 全スライドをループ
For Each slide In ActivePresentation.Slides
Set objTimeLine = slide.TimeLine
' スライド内の全図形をチェック
For Each shp In slide.Shapes
' メディア(動画)であるか判定
If shp.Type = msoMedia Then
If shp.MediaType = ppMediaTypeMovie Then
' 1. 再生設定(ループ再生)
With shp.AnimationSettings.PlaySettings
.PlayOnEntry = msoTrue
.LoopUntilStopped = msoTrue
End With
' 2. アニメーションの順番を一番先頭(0)にする
' これをしないと、他にアニメがあると自動再生されない場合がある
shp.AnimationSettings.AnimationOrder = 0
' 3. 開始タイミングを「直前の動作と同時」に設定
' TimeLineオブジェクトから該当するEffectを取得して設定する
Set objEffect = objTimeLine.MainSequence.Item(shp.AnimationSettings.AnimationOrder)
objEffect.Timing.TriggerType = msoAnimTriggerWithPrevious
End If
End If
Next shp
Next slide
MsgBox "設定が完了しました。スライドショーで確認してください。"
End Sub
-
- -
ここがポイント!デバッグの記録
1. PlaySettingsだけでは「自動再生」にならない?
当初、ChatGPTのコードでは ``.PlayOnEntry = msoTrue`` を設定していましたが、これだけでは「クリック時」設定が残ってしまい、スライド切り替えと同時に再生が始まりませんでした。
解決策として、''TimeLineオブジェクトのMainSequence''を操作し、``TriggerType`` を ``msoAnimTriggerWithPrevious``(直前の動作と同時)に書き換える必要がありました。
2. 順番の罠:AnimationOrder = 0
動画を挿入する前に他の図形にアニメーションがついていると、動画のアニメーションがリストの下の方に配置されてしまいます。
``shp.AnimationSettings.AnimationOrder = 0`` を明示的に指定することで、スライドが表示された瞬間に真っ先に動画が動き出すようになります。
[08:17](https://www.youtube.com/watch?v=4Dw5WpEWq_I&t=497s) あたりの実演を見ると、その重要性がわかると思います。
-
- -