三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

マクロ パワポ 複数のテキスト・図形にアニメを設定 直前の操作と同時 TimeLineにAddEffectでアニメを追加後 Effect.Timingを設定する

パワポのアニメ設定を追加するには、
Dim objTimeLine As PowerPoint.TimeLine 'タイムラインって日本語だと?何だろう?
Set objTimeLine = objSLD.TimeLine 'スライドの下にタイムラインがあります
'↑このタイムラインにアニメ効果を追加していくイメージです
Dim objEffect As PowerPoint.Effect '効果
Set objShape = ActiveWindow.Selection.ShapeRange(1) '←このシェイプを↓アニメ効果を追加
Set objEffect = objTimeLine.MainSequence.AddEffect(objShape, msoAnimEffectFade)
'タイミングのセット
objEffect.Timing.TriggerType = msoAnimTriggerOnPageClick 'クリック後など

上記の流れを動画で説明してます(説明しているつもりです・・・)
youtu.be
https://youtu.be/n0wT7AL8wYU
目次
00:00 0.やりたいこと
00:35 1.ランキング発表を例に実演
03:23 2.簡単なコードの説明
11:00 3.ウォッチ式で確認してみます
16:45 4.終わりの挨拶

#PowerPointVBA #マクロ #アニメーション #直前の操作と同時 #設定
#TimeLine #Sequence #Effect #Timing #Trigger


0.やりたいこと
パワポで複数のシェイプを選択後、
アニメにする、効果を追加する
直前の動作と同時にして、同じグループ、表示タイミングにしたい。

キッカケは知恵袋の質問
detail.chiebukuro.yahoo.co.jp

パワーポイントの動作をVBAで再現したいと考えています
2つのアニメーションを同時に再生させたいのですが
マニュアルで実施するときは、
①アニメーションウィンドウを開いて2つのアニメーションをそこに移動させ、
②下に現れたアニメーション名を選択し、
③右の下矢印をプルダウンして、直前の操作と同時、
とすればいいですが
これをVBAでやりたいのです。教えていただけないでしょうか

1.ランキング発表を例に実演

おっちゃんの解り難いコード説明は置いといて、
いきなり、作成したVBAの実演からやってみます。

例:ランキングを三位からアニメのフェードで発表する

手順
複数のオブジェクト、テキストボックス・シェイプを選択後、
マクロを走らせます。


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)  'プレゼンの下、スライドnページをセット
    
    'アニメ効果
    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

2.1 スライドの下にタイムラインがあります

図1 PowerPoint.TimeLine , PowerPoint.Sequence

'アニメ効果
Dim objTimeLine As PowerPoint.TimeLine 'タイムラインって日本語だと?何だろう?
Set objTimeLine = objSLD.TimeLine 'スライドの下にタイムラインがあります

ここに、アニメの効果が詰まってます。

今回は、新規に追加なので、
'1個目のシェイプは(基準)、そのままアニメを追加
Set objShape = ActiveWindow.Selection.ShapeRange(1) '←このシェイプを↓アニメ効果を追加
Set objEffect = objTimeLine.MainSequence.AddEffect(objShape, msoAnimEffectFade)

TimeLine.MainSequence.AddEffect(objShape, msoAnimEffectFade)
で追加しました。
msoAnimEffectFade これの調べ方などを解説する

2.2 個々の効果 エフェクトの下にタイミングなどがあります

図2 PowerPoint.Effect

次に、追加した効果のプロパティをいじります。
'タイミングのセット
objEffect.Timing.TriggerType = msoAnimTriggerOnPageClick 'クリック後

objEffect.Timing.TriggerType = msoAnimTriggerWithPrevious '直前の動作と同時
など、セットします。


3. いつもの退屈なウォッチ式で確認してみます
Effect.Timing 含め ウォッチ式の確認を実演

- : TimeLine : : TimeLine/TimeLine :
- : MainSequence : : Sequence/Sequence :
: Count : 3 : Long :
- : Item 1 : : Variant/Object/Effect :
: EffectType : msoAnimEffectFade : MsoAnimEffect :
- : Timing : : Timing/Timing :
: TriggerDelayTime : 0 : Single :
: TriggerType : msoAnimTriggerOnPageClick : MsoAnimTriggerType :

- : Item 2 : : Variant/Object/Effect :
- : Timing : : Timing/Timing :
: TriggerDelayTime : 0 : Single :
: TriggerType : msoAnimTriggerWithPrevious : MsoAnimTriggerType :

図1 PowerPoint.TimeLine , PowerPoint.Sequence
Sub アニメのタイミングを探る()  'ウォッチ式で確認テスト用
    Dim nPAGE As Integer
    Dim objSLD As PowerPoint.Slide   'スライド
    Dim objShape As PowerPoint.Shape 'シェイプ
    
    nPAGE = ActiveWindow.Selection.SlideRange.SlideIndex '現在選択しているページ
    Set objSLD = ActivePresentation.Slides(nPAGE)  'プレゼンの下、スライドnページをセット
    
    'アニメ
    Dim objTimeLine As PowerPoint.TimeLine  'タイムラインって日本語だと?何だろう?
    Set objTimeLine = objSLD.TimeLine  'スライドの下にタイムラインがあります
    
    Dim objSequence As PowerPoint.Sequence      'シーケンス 順序
    Set objSequence = objTimeLine.MainSequence  'メインの順序を代入※別変数にしなくていいけど
    
    Debug.Print "総数:" & objSequence.Count     'MainSequence.Countの方がわかりやすいかも
    
    'テストで順序の中.Item Effectを探る
    Dim objEffect As PowerPoint.Effect  '順序の中にエフェクト 効果 が詰まってます。ぉぃぉぃ
    
    For Each objEffect In objSequence   '1つ1つ アニメ効果を取り出す
        Debug.Print objEffect.Index
        Debug.Print "Shape.Name:" & objEffect.Shape.Name
        
        objEffect.Shape.Select  'わかりやすいように該当オブジェクトを選択
        Stop  '止める
    Next

    MsgBox "終了"
End Sub


TimeLine オブジェクト (PowerPoint)
learn.microsoft.com

上記公式を見たほうがハヤイか・・・

4.終わりの挨拶
よし、完成したね。おじさんやったね。
でも、
複数テキストや図形を選んで(※同じく複数選択状態にして)
アニメ の アニメーションの追加ボタンを押してみてよ

あっ、、、

では、またぁ・・・(※作ること無かったのかなぁ・・・今さらだけど・・・)


似ている記事:
イベントのアニメを探った記事は下記を見てください
ken3memo.hatenablog.com



アニメーションのタイプをメモ:

MsoAnimEffect 列挙 (PowerPoint)
https://learn.microsoft.com/ja-jp/office/vba/api/powerpoint.msoanimeffect

名前 値 説明
msoAnimEffectAppear 1 アピール
msoAnimEffectArcUp 47 アーチ (上)
msoAnimEffectAscend 39 アップ
msoAnimEffectBlast 64 爆破
msoAnimEffectBlinds 3 ブラインド
msoAnimEffectBoldFlash 63 ボールドフラッシュ
msoAnimEffectBoldReveal 65 太字表示
msoAnimEffectBoomerang 25 ブーメラン
msoAnimEffectBounce 26 バウンド
msoAnimEffectBox 4 ボックス
msoAnimEffectBrushOnColor 66 カラーブラシ
msoAnimEffectBrushOnUnderline 67 下線ブラシ
msoAnimEffectCenterRevolve 40 リボルブ
msoAnimEffectChangeFillColor 54 塗りつぶしの色の変更
msoAnimEffectChangeFont 55 フォントの変更
msoAnimEffectChangeFontColor 56 フォントの色の変更
msoAnimEffectChangeFontSize 57 フォント サイズの変更
msoAnimEffectChangeFontStyle 58 スタイルの変更
msoAnimEffectChangeLineColor 60 線の色の変更
msoAnimEffectCheckerboard 5 チェッカーボード効果
msoAnimEffectCircle 6 サークル
msoAnimEffectColorBlend 68 カラー ブレンド
msoAnimEffectColorReveal 27 表示される色
msoAnimEffectColorWave 69 カラー ウェーブ
msoAnimEffectComplementaryColor 70 補色
msoAnimEffectComplementaryColor2 71 補色 2
msoAnimEffectContrastingColor 72 カラー コントラスト
msoAnimEffectCrawl 7 クロール効果
msoAnimEffectCredits 28 クレジット効果
msoAnimEffectCustom 0 ユーザー設定の効果
msoAnimEffectDarken 73 暗くする効果
msoAnimEffectDesaturate 74 薄くする効果
msoAnimEffectDescend 42 ダウン効果
msoAnimEffectDiamond 8 ひし形効果
msoAnimEffectDissolve 9 ディゾルブ効果
msoAnimEffectEaseIn 29 イーズイン効果
msoAnimEffectExpand 50 エクスパンド効果
msoAnimEffectFade 10 フェード効果
msoAnimEffectFadedSwivel 41 フェードとターン効果
msoAnimEffectFadedZoom 48 フェードとズーム効果
msoAnimEffectFlashBulb 75 フラッシュ バルブ効果
msoAnimEffectFlashOnce 11 フラッシュ
msoAnimEffectFlicker 76 明滅効果
msoAnimEffectFlip 51 フリップ効果
msoAnimEffectFloat 30 フローと効果
msoAnimEffectFly 2 スライド効果
msoAnimEffectFold 53 フォールド効果
msoAnimEffectGlide 49 グライダー効果
msoAnimEffectGrowAndTurn 31 グローとターン効果
msoAnimEffectGrowShrink 59 拡大と収縮効果
msoAnimEffectGrowWithColor 77 カラーで拡大する効果
msoAnimEffectLighten 78 明るくする効果
msoAnimEffectLightSpeed 32 ライト スピード効果
msoAnimEffectMediaPause 84 メディアの一時停止効果
msoAnimEffectMediaPlay 83 メディアの再生効果
msoAnimEffectMediaStop 85 メディアの停止効果
msoAnimEffectPath4PointStar 101 Path4PointStar 効果
msoAnimEffectPath5PointStar 90 Path5PointStar 効果
msoAnimEffectPath6PointStar 96 Path6PointStar 効果
msoAnimEffectPath8PointStar 102 Path8PointStar 効果
msoAnimEffectPathArcDown 122 アーチ (下) パスで移動
msoAnimEffectPathArcLeft 136 アーチ (左) パスで移動
msoAnimEffectPathArcRight 143 アーチ (右) パスで移動
msoAnimEffectPathArcUp 129 アーチ (上) パスで移動
msoAnimEffectPathBean 116 豆のパスで移動
msoAnimEffectPathBounceLeft 126 バウンド (左) パスで移動
msoAnimEffectPathBounceRight 139 バウンド (右) パスで移動
msoAnimEffectPathBuzzsaw 110 丸のこのパスで移動
msoAnimEffectPathCircle 86 環状パスで移動
msoAnimEffectPathCrescentMoon 91 三日月のパスで移動
msoAnimEffectPathCurvedSquare 105 四角形 (曲線) パスで移動
msoAnimEffectPathCurvedX 106 曲線 (X 型) パスで移動
msoAnimEffectPathCurvyLeft 133 湾曲カーブ (左) パスで移動
msoAnimEffectPathCurvyRight 146 湾曲カーブ (右) パスで移動
msoAnimEffectPathCurvyStar 108 星 (曲線) パスで移動
msoAnimEffectPathDecayingWave 145 波線 (減衰曲線) パスで移動
msoAnimEffectPathDiagonalDownRight 134 対角線 (右下) パスで移動
msoAnimEffectPathDiagonalUpRight 141 対角線 (右上) パスで移動
msoAnimEffectPathDiamond 88 ひし形のパスで移動
msoAnimEffectPathDown 127 下向きのパスで移動
msoAnimEffectPathEqualTriangle 98 正三角形パスで移動
msoAnimEffectPathFigure8Four 113 8 の字 (ダブル) パスで移動
msoAnimEffectPathFootball 97 フットボール パスで移動
msoAnimEffectPathFunnel 137 じょうごパスで移動
msoAnimEffectPathHeart 94 ハート型のパスで移動
msoAnimEffectPathHeartbeat 130 鼓動のパスで移動
msoAnimEffectPathHexagon 89 六角形パスで移動
msoAnimEffectPathHorizontalFigure8 111 8 の字 (横) パスで移動
msoAnimEffectPathInvertedSquare 119 四角形 (転回) パスで移動
msoAnimEffectPathInvertedTriangle 118 三角形 (転回) パスで移動
msoAnimEffectPathLeft 120 左のパスで移動
msoAnimEffectPathLoopdeLoop 109 ループ パスで移動
msoAnimEffectPathNeutron 114 ニュートロン パスで移動
msoAnimEffectPathOctagon 95 八角形パスで移動
msoAnimEffectPathParallelogram 99 平行四辺形パスで移動
msoAnimEffectPathPeanut 112 ピーナッツ パスで移動
msoAnimEffectPathPentagon 100 五角形パスで移動
msoAnimEffectPathPlus 117 プラスのパスで移動
msoAnimEffectPathPointyStar 104 星 (シャープ) パスで移動
msoAnimEffectPathRight 149 右のパスで移動
msoAnimEffectPathRightTriangle 87 直角三角形パスで移動
msoAnimEffectPathSCurve1 144 カーブ S 型 (1) パスで移動
msoAnimEffectPathSCurve2 124 カーブ S 型 (2) パスで移動
msoAnimEffectPathSineWave 125 波線 (正弦曲線) パスで移動
msoAnimEffectPathSpiralLeft 140 スパイラル (左) パスで移動
msoAnimEffectPathSpiralRight 131 スパイラル (右) パスで移動
msoAnimEffectPathSpring 138 スプリング パスで移動
msoAnimEffectPathSquare 92 四角形パスで移動
msoAnimEffectPathStairsDown 147 ステップダウン パスで移動
msoAnimEffectPathSwoosh 115 スウッシュ パスで移動
msoAnimEffectPathTeardrop 103 涙のパスで移動
msoAnimEffectPathTrapezoid 93 台形パスで移動
msoAnimEffectPathTurnDown 135 ターン (下) パスで移動
msoAnimEffectPathTurnRight 121 ターン (右) パスで移動
msoAnimEffectPathTurnUp 128 ターン (上) パスで移動
msoAnimEffectPathTurnUpRight 142 ターン (右上) パスで移動
msoAnimEffectPathUp 148 上のパスで移動
msoAnimEffectPathVerticalFigure8 107 8 の字 (縦) パスで移動
msoAnimEffectPathWave 132 波線パスで移動
msoAnimEffectPathZigzag 123 ジグザグ パスで移動
msoAnimEffectPeek 12 ピーク効果
msoAnimEffectPinwheel 33 ピンウィール効果
msoAnimEffectPlus 13 プラス効果
msoAnimEffectRandomBars 14 ランダム ストライプ効果
msoAnimEffectRandomEffects 24 ランダム効果
msoAnimEffectRiseUp 34 ライズ アップ効果
msoAnimEffectShimmer 52 シマー効果
msoAnimEffectSling 43 スリング効果
msoAnimEffectSpin 61 スピン効果
msoAnimEffectSpinner 44 スピナー効果
msoAnimEffectSpiral 15 スパイラル効果
msoAnimEffectSplit 16 スプリット効果
msoAnimEffectStretch 17 ストレッチ効果
msoAnimEffectStretchy 45 ゴム効果
msoAnimEffectStrips 18 ストリップ効果
msoAnimEffectStyleEmphasis 79 強調効果
msoAnimEffectSwish 35 スイッシュ効果
msoAnimEffectSwivel 19 ターン効果
msoAnimEffectTeeter 80 シーソー効果
msoAnimEffectThinLine 36 細線効果
msoAnimEffectTransparency 62 透過性効果
msoAnimEffectUnfold 37 アンフォールド効果
msoAnimEffectVerticalGrow 81 縦に拡大効果
msoAnimEffectWave 82 ウェーブ効果
msoAnimEffectWedge 20 くさび形効果
msoAnimEffectWheel 21 ホイール効果
msoAnimEffectWhip 38 ホイップ効果
msoAnimEffectWipe 22 ワイプ効果
msoAnimEffectZip 46 拡大効果
msoAnimEffectZoom 23 ズーム効果

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)