今さら知ろう

今さら な 古い情報をブログにアップしています。

AIで過去動画をまとめた PowerPoint VBAでアニメーションを自動化!TimeLineとTriggerTypeの使い方

PowerPoint VBA】アニメーションの「直前の動作と同時」を一括設定する方法(TriggerType)

パワーポイントで複数の図形やテキストにアニメーションを設定する際、一つずつ「直前の動作と同時に開始」に変更するのは面倒ですよね。

AIで動画をブログにしてみた

今回は、知恵袋の質問をきっかけに、選択した複数のシェイプに対して''「フェード」効果を追加し、2つ目以降を自動的に「直前の動作と同時」に設定するVBAコード''を解説します。

...と言いつつ、最後には衝撃の結末(?)が待っています。

動画で実演と解説

実際の動作と、変数の中身をウォッチ式で覗いている様子は動画を確認してください。
[00:00](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=0s) 0.やりたいこと
[00:35](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=35s) 1.ランキング発表を例に実演
[03:23](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=203s) 2.簡単なコードの説明
[11:00](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=660s) 3.ウォッチ式で確認してみます
[16:45](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=1005s) 4.終わりの挨拶(衝撃の事実)

PowerPoint VBA ソースコード

選択したシェイプをループで回し、アニメーション効果(Effect)を追加してタイミング(Timing)を制御するコードです。

'選択されたシェイプにアニメ効果を追加する
'複数選択時、2つ目以降を「直前の動作と同時」にする
Sub pp選択シェイプにアニメ効果を追加_20230130test()

    'シェイプが選択されているかチェック
    If ActiveWindow.Selection.Type <> ppSelectionShapes Then
        MsgBox "Shape図形やテキストボックスを選択してね"
        Exit Sub
    End If

    Dim nPAGE As Integer
    Dim objSLD As PowerPoint.Slide   'スライド
    Dim objShape As PowerPoint.Shape 'シェイプ
    
    nPAGE = ActiveWindow.Selection.SlideRange.SlideIndex '現在選択しているページ
    Set objSLD = ActivePresentation.Slides(nPAGE)  'スライドオブジェクトをセット
    
    'アニメーションの管理はTimeLineオブジェクトで行う
    Dim objTimeLine As PowerPoint.TimeLine
    Set objTimeLine = objSLD.TimeLine
  
    Dim objEffect As PowerPoint.Effect  'アニメーション効果
    
    '1個目のシェイプを基準としてアニメを追加(クリックで開始)
    Set objShape = ActiveWindow.Selection.ShapeRange(1)
    Set objEffect = objTimeLine.MainSequence.AddEffect(objShape, msoAnimEffectFade)
    'タイミングのセット:クリック時
    objEffect.Timing.TriggerType = msoAnimTriggerOnPageClick
    
    '複数選択の2個目以降をループ処理
    Dim n As Integer
    For n = 2 To ActiveWindow.Selection.ShapeRange.Count
        Set objShape = ActiveWindow.Selection.ShapeRange(n)
        'フェード効果を追加
        Set objEffect = objTimeLine.MainSequence.AddEffect(objShape, msoAnimEffectFade)
        'タイミングのセット:直前の動作と同時
        objEffect.Timing.TriggerType = msoAnimTriggerWithPrevious
    Next

    MsgBox "処理終了、アニメーションウインドで確認してください"

End Sub

コードのポイント解説

1. TimeLineオブジェクト

パワーポイントのアニメーションは、スライドオブジェクトの下にある''TimeLine(タイムライン)''で管理されています。 [03:23](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=203s)
さらにその中の''MainSequence(メインシーケンス)''に対して「AddEffect」することで、新しいアニメーションを追加できます。

2. TriggerTypeプロパティ

アニメーションが「いつ」始まるかを決めるのが、''Timing.TriggerType''です。 [08:44](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=524s)

  • ''msoAnimTriggerOnPageClick'' :クリック時
  • ''msoAnimTriggerWithPrevious'' :直前の動作と同時
  • ''msoAnimTriggerAfterPrevious'' :直前の動作の後

動画内では、ウォッチ式を使って、これらのプロパティが内部でどう保持されているかを詳しく解説しています。 [11:00](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=660s)

まさかのオチ:VBAは不要だった?

一生懸命コードを書きましたが、動画の最後で気づいてしまいました。 [16:45](https://www.youtube.com/watch?v=n0wT7AL8wYU&t=1005s)

「複数の図形を選択した状態で、標準機能の『アニメーションの追加』ボタンを押すと、自動的に2番目以降が『直前の動作と同時』に設定される」

実はパワポの標準機能が優秀すぎて、この程度の処理ならマクロを組む必要がなかったという衝撃の事実。
とはいえ、大量のスライドを自動生成する場合や、より複雑なディレイ(遅延)制御を行う場合には、今回紹介したVBAの知識(TimeLineやTriggerTypeの操作)が必ず役に立つはずです。


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~