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

這是我根據史蒂夫的回答想出的腳本。由於某種原因,我遇到了幻燈片轉換變數超過看似任意限制 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 似乎有一個錯誤,會導致計時嚴重混亂。顯然,在功能區選項 TRANSITIONS 下,預設會自動選取「XXX 秒後前進投影片」選項。如果您編輯任何過渡並且不取消選取此選項,則所有計時都會被刪除並替換為功能區選項中顯示的數字。

我花了幾天時間試圖修復那些旁白時間被刪除的演示文稿,甚至重新錄製旁白(沒有樂趣),然後採取抓屏方式手動運行整個演示文稿,然後轉換為視頻。 Jon G 的上述解決方案在大約 25 秒內解決了這個問題。

謝謝,喬恩!

相關內容