%EF%BC%9A%E5%B0%87%E6%8A%95%E5%BD%B1%E7%89%87%E8%A8%88%E6%99%82%E8%A8%AD%E5%AE%9A%E7%82%BA%E6%97%81%E7%99%BD%E6%8C%81%E7%BA%8C%E6%99%82%E9%96%93.png)
一不小心就跑了清除所有投影片上的計時命令並丟失所有幻燈片計時。然而,我的簡報的每張投影片都有旁白。是否有 GUI/VBA 方法可以將幻燈片計時設定為所有幻燈片的旁白持續時間?
謝謝。
答案1
我制定了一個臨時解決方法:
- 選擇幻燈片上的音訊剪輯。
- 在下面音訊工具,在回放選項卡,按一下修剪音訊。請注意總播放時長請參考右上角。
- 手動調整調整滑動計時過渡選項卡,在定時組,下進階幻燈片, 在後輸入框。
該工作流程有效,但是手動的,因此很費力。
你知道如何透過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 秒內解決了這個問題。
謝謝,喬恩!