PowerPoint 2013(6): スライドのタイミングをナレーションの長さに設定する

PowerPoint 2013(6): スライドのタイミングをナレーションの長さに設定する

誤って走ってしまったすべてのスライドのタイミングを明確にするコマンドを実行しても、すべてのスライドのタイミングが失われました。ただし、プレゼンテーションの各スライドにはナレーションがあります。すべてのスライドのスライドタイミングをナレーションの長さに設定する GUI/VBA の方法はありますか?

ありがとう。

答え1

一時的な回避策を開発しました:

  1. スライド上のオーディオ クリップを選択します。
  2. オーディオツール、の再生タブをクリックしてオーディオをトリミング再生時間の合計については右上隅を参照してください。
  3. 手動で調整調整するスライドタイミングトランジションタブのタイミンググループ、下前進スライド、 で入力ボックス。

ワークフローは機能しますが、手動であるため手間がかかります。

VBA を通じてオーディオの合計再生時間を読み取る方法をご存知ですか?

答え2

プレゼンテーション内のサウンドの合計の長さを取得する VBA を以下に示します (その過程で、各サウンドを返します... 分割する必要がある場合は、コードを変更できます)。

Sub SumSoundLengths()

    Dim oSh As Shape
    Dim oSl As Slide
    Dim sngLengthOfSound As Single
    Dim sngSoundDuration As Single
    
    For Each oSl In ActivePresentation.Slides
        For Each oSh In oSl.Shapes
        If oSh.Type = msoMedia Then
            If oSh.MediaType = ppMediaTypeSound Then
                With oSh
                    sngLengthOfSound = .MediaFormat.Length
                    sngSoundDuration = sngSoundDuration + sngLengthOfSound
                End With
            End If
        End If
        Next
    Next
    
    MsgBox "Sounds total to: " & CStr(sngSoundDuration)
    
End Sub

答え3

ここに、Steve の回答に基づいて私が作成したスクリプトがあります。何らかの理由で、スライド遷移変数が一見恣意的な制限値 86.4 を超えるという問題が発生しました。その数値を変更してもエラーが発生しない場合は、すべて削除してもかまいません。

Sub SetTransitionTimings()

      Dim shapeObj As Shape
      Dim slideObj As Slide
      Dim sngLengthOfSound As Single
      Dim slideDuration As Single

      For Each slideObj In ActivePresentation.Slides

              slideDuration = 0

              For Each shapeObj In slideObj.Shapes

                              If shapeObj.Type = msoMedia Then
                                             If shapeObj.MediaType = ppMediaTypeSound Then
                                                            With shapeObj
                                                                    .AnimationSettings.PlaySettings.PlayOnEntry = msoTrue
                                                                    sngLengthOfSound = .MediaFormat.Length / 1000
                                                                    slideDuration = slideDuration + sngLengthOfSound
                                                            End With
                                             End If
                              End If

              Next

              If slideDuration = 0 Then
                              slideDuration = 5
              End If

              If slideDuration < 86.4 Then
                            With slideObj.SlideShowTransition
                                    .AdvanceOnTime = msoTrue
                                    .Duration = 1
                                    .AdvanceTime = slideDuration
                            End With
              Else
                            Debug.Print "Slide " & slideObj.SlideNumber & ": " & slideDuration
              End If

      Next

      MsgBox "Transition timings set."

End Sub

答え4

最新バージョンの PowerPoint にはタイミングに混乱を引き起こすバグがあるようです。リボン オプションの [トランジション] で、[XXX 秒後にスライドを進める] オプションがデフォルトで自動的にオンになっているようです。トランジションを編集してこのオプションをオフにしないと、すべてのタイミングが消去され、リボン オプションに表示されている数字に置き換えられます。

私はナレーションのタイミングが消えてしまったプレゼンテーションを修正しようと何日も費やし、ナレーションを再度録音し直し (うまくいかなかった)、その後、プレゼンテーション全体を手動で実行して自分でスクリーンショットを撮り、ビデオに変換するという方法に頼りました。この問題を解決したのは、上記の Jon G の解決策で、わずか 25 秒ほどで完了しました。

ありがとう、ジョン!

関連情報