通过具有动态幻灯片持续时间的脚本将 powerpoint 导出到 mp4

Export powerpoint to mp4 by script with dynamic slide duration

我想将很多 powerpoint 演示文稿导出为 mpeg4。使用 Powerpoint 中的现有功能,我可以设置每张幻灯片的持续时间或使用时间表。为了制定这个时间表,我必须点击演示文稿并记录我的点击次数,或者为每张幻灯片和动画设置一个时间,这是一项繁重的工作。

有什么方法可以创建一个脚本来定义鼠标点击持续时间吗?我想要一张没有动画的幻灯片出现 3 秒,一张有两个动画的幻灯片出现 9 秒 (slide + animation1 + animation2)。

我不想指定显示持续时间,而是一种点击持续时间...

有谁知道这样的事情是否可行?

这是一个 VBA 脚本,用于根据幻灯片上显示的动画数量为每张幻灯片设置“提前”设置。

For Each sld In ActivePresentation.Slides
    animationCount = sld.TimeLine.MainSequence.Count
    sld.SlideShowTransition.AdvanceOnTime = msoTrue
    sld.SlideShowTransition.AdvanceTime = animationCount * 3 + 3
Next

ActivePresentation.CreateVideo "C:\SomePath\Filename.mp4", True

在这个例子中,如果幻灯片上有动画,用这一行,我们将时间设置为动画计数的 3 倍加 3,如下例所示。如果我们有一张包含 2 个动画的幻灯片,则“提前时间”持续时间设置为 2*3+3=9 秒。根据您的需要进行更改。

        sld.SlideShowTransition.AdvanceTime = animationCount * 3 + 3

最后一行允许您导出带时间的视频。

这是另一个示例,您可以在其中指定无动画以不提前设置时间,但如果需要,请提供默认持续时间:

For Each sld In ActivePresentation.Slides
    animationCount = sld.TimeLine.MainSequence.Count
    If animationCount >= 1 Then
        sld.SlideShowTransition.AdvanceOnTime = msoTrue
        sld.SlideShowTransition.AdvanceTime = animationCount * 3 + 3
    Else
        sld.SlideShowTransition.AdvanceOnTime = msoFalse
    End If
Next

ActivePresentation.CreateVideo "C:\SomePath\Filename.mp4", True, 3

(如果您不熟悉 VBA,我们可能会找到一些文档和教程)