三流君 ken3のmemo置き場

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

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
Ken3三流君の連絡先:
[google formsで連絡する]
上記の問い合わせフォームに質問・感想など気軽に書き込んでください

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

PowerPoint アニメ 継続時間と遅延の設定 DurationとTriggerDelayTimeを使用したソースコード

02:25 継続時間の書き戻し Excelシートで修正したアニメーション時間をPowerPointに書き戻す方法を解説。
https://www.youtube.com/watch?v=6BL3lLcAEw4&t=145

ソースコード:

Option Explicit

'アクティブなPowerPointスライドのアニメーションを探る
'アニメの時間をシートへ書き込む
Sub test240910_ppアニメ情報をシートへ()

    '起動済みのパワポを捕まえる
    Dim ppApp As Object  'As PowerPoint.Application
    
    Set ppApp = Nothing
    On Error Resume Next  'エラーが発生しても強引に次の命令に行け
    Set ppApp = GetObject(, "PowerPoint.Application")
    On Error GoTo 0  '忘れないで戻すぞ

    If ppApp Is Nothing Then
        MsgBox "パワポが見つかりません"
        Exit Sub
    End If

    'Excel側の見出しを書く
    Dim 基準位置 As Range
    Set 基準位置 = Range("B6")  'B6を起点にデータを処理する
    
    基準位置.CurrentRegion.Clear '基準位置から範囲データをクリアする
    基準位置.Offset(0, 0) = "No" '見出しを書く
    基準位置.Offset(0, 1) = "名前"
    基準位置.Offset(0, 2) = "アニメType"
    基準位置.Offset(0, 3) = "のExitか?(クリア)"
    基準位置.Offset(0, 4) = "継続時間"
    基準位置.Offset(0, 5) = "遅延"
    
    Dim nPAGE As Integer
    Dim objSLD   As Object  'スライド
    Dim objShape As Object  'シェイプ
    
    nPAGE = ppApp.ActiveWindow.Selection.SlideRange.SlideIndex '現在選択しているページ
    Set objSLD = ppApp.ActivePresentation.Slides(nPAGE)  'プレゼンの下、スライドnページをセット
    
    'アニメ タイムテーブル
    Dim objTimeLine As Object  'アニメタイムライン
    Set objTimeLine = objSLD.TimeLine  'スライドの下にタイムラインがあります
  
    '↑このタイムラインにアニメ効果を追加していくイメージです
    Dim objEffect As Object  'タイムラインの中にアニメ効果
    
    'TimeLine.MainSequenceから複数のアニメ効果を取り出しセルに書き込む
    Dim n As Integer
    For n = 1 To objTimeLine.MainSequence.Count 'アニメ効果の数ループ
        Set objEffect = objTimeLine.MainSequence(n) '←このアニメ効果を探る
        With objEffect
            基準位置.Offset(n, 0) = n   'No
            基準位置.Offset(n, 1) = .DisplayName '"名前"
            基準位置.Offset(n, 2) = .EffectType  '"アニメType"
            基準位置.Offset(n, 3) = .Exit        'フェードイン表示とフェードアウトクリアの判断
            
            'タイミング.Timingの下
            基準位置.Offset(n, 4) = .Timing.Duration '"継続時間"
            基準位置.Offset(n, 5) = .Timing.TriggerDelayTime '"遅延"
        End With
    
    Next

    MsgBox "処理終了、セルの値を確認して下さい"

End Sub



'アクティブなPowerPointスライドのアニメーションを探る
'シートで設定した時間をppへ書き戻す、修正する
Sub test240910_シート入力時間でppアニメを更新()

    '起動済みのパワポを捕まえる
    Dim ppApp As Object  'As PowerPoint.Application
    
    Set ppApp = Nothing
    On Error Resume Next  'エラーが発生しても強引に次の命令に行け
    Set ppApp = GetObject(, "PowerPoint.Application")
    On Error GoTo 0  '忘れないで戻すぞ

    If ppApp Is Nothing Then
        MsgBox "パワポが見つかりません"
        Exit Sub
    End If

    'Excel側の見出し位置、基準位置
    Dim 基準位置 As Range
    Set 基準位置 = Range("B6")  'B6を起点にデータを処理する
    
    Dim nPAGE As Integer
    Dim objSLD   As Object  'スライド
    Dim objShape As Object  'シェイプ
    
    nPAGE = ppApp.ActiveWindow.Selection.SlideRange.SlideIndex '現在選択しているページ
    Set objSLD = ppApp.ActivePresentation.Slides(nPAGE)  'プレゼンの下、スライドnページをセット
    
    'アニメ タイムテーブル
    Dim objTimeLine As Object  'アニメタイムライン
    Set objTimeLine = objSLD.TimeLine  'スライドの下にタイムラインがあります
  
    '↑このタイムラインにセットするイメージです
    Dim objEffect As Object  'タイムラインの中にアニメ効果
    
    'TimeLine.MainSequenceのアニメ効果をセルの値で更新する
    Dim y As Integer  'データの位置
    Dim n As Integer  'アニメの位置
    
    For y = 1 To 999 'データを999行ループの手抜きで↓で抜る処理
        If Len(Trim("" & 基準位置.Offset(y, 0))) = 0 Then Exit For
        '↑Noが存在する間ループする
        
        n = 基準位置.Offset(y, 0)  '連番でなくても、処理するため
        Set objEffect = objTimeLine.MainSequence(n) '←このアニメ効果を更新
        '↑エラー処理、欲しいよね・・まぁ、とりあえず保留
        
        '今回は、継続時間と遅延を更新する
        With objEffect
            'タイミング.Timingの下
            .Timing.Duration = 基準位置.Offset(y, 4)         '"継続時間"
            .Timing.TriggerDelayTime = 基準位置.Offset(y, 5) '"遅延"
            DoEvents
        End With
    
    Next

    DoEvents
    MsgBox "処理終了、ppアニメーションウインドウを確認して下さい"

End Sub

1.初めに簡単なコードのポイントを説明する

1.1 スライドオブジェクトの下にアニメのタイムラインがあります

    nPAGE = ppApp.ActiveWindow.Selection.SlideRange.SlideIndex '現在選択しているページ
    Set objSLD = ppApp.ActivePresentation.Slides(nPAGE)  'プレゼンの下、スライドnページをセット
    
    'アニメ タイムテーブル
    Dim objTimeLine As Object  'アニメタイムライン
    Set objTimeLine = objSLD.TimeLine  'スライドの下にタイムラインがあります
  
    '↑このタイムラインにセットするイメージです

各スライドにアニメのタイムテーブルが存在する感じです。
TimeLineにMainSequenceがあり、アニメが順番に処理されます

参考過去動画のURL:
PowerPoint アニメーション TimeLine MainSequence を探ってみた
https://www.youtube.com/watch?v=SnghajBQwIM&t=1034s
こちらも、見てください。と宣伝しつつ、、、


1.2 個々のアニメ効果エフェクトを探ります

TimeLine.MainSequence.Count
で、アニメの数
あとはn番目のアニメ、

        Set objEffect = objTimeLine.MainSequence(n) '←このアニメ効果を探る
        With objEffect
            基準位置.Offset(n, 0) = n   'No
            基準位置.Offset(n, 1) = .DisplayName '"名前"
            基準位置.Offset(n, 2) = .EffectType  '"アニメType"
            基準位置.Offset(n, 3) = .Exit        'フェードイン表示とフェードアウトクリアの判断
            
            'タイミング.Timingの下
            基準位置.Offset(n, 4) = .Timing.Duration '"継続時間"
            基準位置.Offset(n, 5) = .Timing.TriggerDelayTime '"遅延"
        End With

など、プロパティをシートへ書き出しただけです。

08:07 使用したプロパティ 今回の動画で使用したプロパティであるDurationとTriggerDelayTimeについて解説。
https://www.youtube.com/watch?v=6BL3lLcAEw4&t=487
今回使用したいプロパティは、
Effectの下に
Timingがあり、
Duration '"継続時間"

TriggerDelayTime '"遅延"
です。

①シートへ出力したり
②シートの値を書き戻したりしています

参考過去動画のURL:
過去動画のフェードイン・アウトの動画設定などが参考になると思います
PowerPoint アニメーション フェードアウト 終了を連続セットする
https://www.youtube.com/watch?v=9PNq6QRLtZ0&t=360s

PowerPoint アニメーション ワイプの設定 MainSequence AddEffect
https://www.youtube.com/watch?v=9eqfud7dGjs&t=1064s

こちら↑を見てください。と宣伝しつつ、、、



www.youtube.com

https://www.youtube.com/watch?v=6BL3lLcAEw4
目次:
00:00 PowerPointアニメのタイミング調整 PowerPointアニメーションの遅延時間を使った調整方法を解説。複数のアニメーションのタイミングを合わせるテクニックを紹介。

00:25 アニメ設定の書き出し PowerPointのアニメーション設定をExcelシートに書き出す方法を紹介。

02:25 継続時間の書き戻し Excelシートで修正したアニメーション時間をPowerPointに書き戻す方法を解説。

05:53 アニメ効果のプロパティ PowerPointアニメーションのエフェクト、タイミング、継続時間などのプロパティについて解説。

07:42 コード説明 これまでの内容を簡単にまとめたコード説明。

08:07 使用したプロパティ 今回の動画で使用したプロパティであるDurationとTriggerDelayTimeについて解説。

09:04 コード解説:PowerPointアプリケーションの取得 PowerPointアプリケーションを取得するためのVBAコードを解説。

10:05 コード解説:スライドの取得 アクティブなスライドを取得するためのVBAコードを解説。

11:12 タイムラインの構造 PowerPointアニメーションのタイムライン構造について、MainSequenceとInteractiveSequenceの違いに触れながら解説。

12:24 アニメ効果の取得 タイムラインから個々のアニメ効果を取得する方法を解説。

13:18 durationとtriggerDelayTime アニメ効果のプロパティであるdurationとtriggerDelayTimeについて解説。

14:10 DisplayNameの取得 アニメ効果のプロパティであるDisplayNameを取得する方法を解説。

15:14 タイミングの下 タイミングのプロパティの詳細について解説。

17:30 遅延時間を使う理由 なぜアニメーションのタイミングを全て遅延時間で調整するのか、その理由を解説。

18:08 直前の動作の後の使い方 アニメーションの開始タイミングとして「直前の動作の後」を使用する方法と、その用途を解説。

22:57 遅延時間調整のメリット 写真などを表示する際、遅延時間調整が便利な理由を解説。

23:42 直前の動作と同時 + 遅延時間調整 全てのアニメーションを「直前の動作と同時」に設定し、遅延時間でタイミングを調整する方法を解説。

31:48 Excelツールを使った調整 再度Excelツールを使ってアニメーションのタイミングを調整する方法を紹介。

34:25 蛇足:結婚式のムービー作成 PowerPointを使って結婚式のムービーを作成する例を紹介。知恵袋の質問を元に、BGM、メッセージ、枠線などを追加する方法を解説。

48:56 動く写真の作成 結婚式ムービーに使用する、拡大縮小して動く写真の作成方法を解説。

57:29 写真の配置とアニメーションのコピー 作成した動く写真を複数配置し、アニメーションをコピーして適用する方法を紹介。

1:01:57 Excelツールでタイミング調整 再びExcelツールを使って写真の表示タイミングを調整する方法を解説。

1:05:49 表示順の調整 写真とメッセージの表示順序を調整する方法を解説。

1:08:11 画面切り替え設定 スライドショーの自動切り替え時間の設定方法を紹介。

1:09:56 動画のエクスポート 作成したPowerPointを動画としてエクスポートする方法を紹介。

2.パワーポイントのアニメでタイミングを全て遅延で合わせる?

何言ってんだ?こいつは・・・って、感じですよね。
普通は、アニメを順番に流したかったら、
クリック時
から
直前の動作の後
を使えば、連続してアニメーション動作が行われるのに、

全て、
直前の動作と同時にして、
遅延でタイミングを合わせるとは?

意味不明です。思考が読めません。

2.1 直前の動作の後 で連続実行させる
①1,2,3,4と数字を1秒ごとに表示させてみます
②ワイプで図形の線を導火線のように表示して線をつなげてみます

2.2 全て、直前の動作と同時にして遅延でタイミングを合わせる
アニメーションの間に(同時に)
写真などを表示させたい時、
直前の動作の後だと、タイミングが設定しにくい
※直前の動作の後と直前の動作と同時を組み合わせたりできるけど

写真を挿入する例を実践してみる。
③写真を表示、表示後消して、次の写真を表示する

3.まとめ 作成したExcelのツールを使ってみる


4.おわりの挨拶

こんな感じで、遅延でアニメのタイミングを合わせてみました
処理の参考となれば、幸いです。



5.蛇足:人はなぜPowerPointで結婚式で流すムービーを無理やりにでも作りたいのか?

知恵袋の質問:

結婚式用にプロフィールムービーをパワーポイントで作成しています。
youtubeで参考にしているのが下記リンク先の動画なのですが、6分10秒くらいから流れる、
・画像は背景に透過されていて何枚も流れる
・メッセージが流れる
・メッセージを囲う四角が画像とメッセージ終わるタイミングで完成する
このスライドを作りたいのですが、やり方がわかりません。
ご教授いただきたいです。

に答えてみます
(※幸せな人を助けると、自分も幸せになれるといいなぁ・・・おいおい)

結婚式のBGM
パカパカ~ン
チャララ~ン
繰り返す

5.1 メッセージが流れる
メッセージを作る行間設定、

メッセージ:
これまでの沢山の
出会いと思い出に感謝し
ふたりで明るく幸せな家庭を
築いていきたいと思います

アニメの設定:
緑色の表示のアニメを使い
オプションを段落単位にする
動作を
直前の動作と同時にして
遅延でタイミングを取る
3秒×4行の12秒で作成する
※この秒数を下の枠を合わせる

色を白、フチ取りとか、シャドーとか、必要かも・・・

5.2 枠の作成
直線を4つ作成して、枠として使う
アニメのワイプを設定して、オプションの方向をセットする
直前の動作と同時にして
縦棒2.5秒
横棒3.5秒
遅延でタイミングを取る
※タイミングは、同じ速度に調整してね、とりあえずのセットで。

5.3 メッセージと枠をプラスして確認する
新しいスライドに
作成した二つのスライドの部品を追加する

5.4 動く写真のアニメ、ひな型を作る

写真を動かす方法は、イロイロありますが、
テストで、
①透過30%の写真、拡大130%
アニメで表示、拡大130%,クリアの3セットを作成する
直前の動作と同時にして
表示0.25秒 遅延秒
拡大縮小1.50秒 遅延0.25秒
クリア0.25秒 遅延1.75秒
で、作成、遅延をセットする

②透過30%の写真、縮小75%を作成
同様に、縮小パターンを作る。
※2パターンの動きでテスト、動かし方や、移動は、検討事項・・・


5.5 写真を貼り付ける
写真を6枚、2秒*6枚で12秒でテストしたいと思います。
写真を貼り、ひな型のアニメをコピーします(透過設定もコピーします)

アニメーションのコピー貼り付けを使い、3つをコピーします


5.6 遅延時間を調整します
あとは、気合で、遅延時間を調整・・・おいおい・・・
だと、調整が大変なので、
Excelの自作ツールを使います
※宣伝も兼ねて・・・


以上、簡単な説明でした・・・
なんとなく、違うなぁ・・と思いつつ、
PowerPointのアニメを遅延で合わせてみました。

あっ、この複雑なアニメ設定?チャント出力できるんだろうなぁ・・・
動画にエクスポートで、できなかったら・・が、良くある話なので・・・

ランダムな占い

再生リスト:[占い 今日のラッキーカラー]をショート動画

Ken3 ホームページ 目次

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

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



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