0

所以我有一个相当复杂的 PowerPoint,我一直在研究它——它是一个复杂的培训程序,结合了一个测试部分,它提供多项选择题,其中一些只是文本,一些是图形,一些是动画图形,还有一些是合成语音和音频等。当用户错误地回答幻灯片时,VBA代码将幻灯片复制到演示文稿的末尾,以便用户必须重新回答错过的问题,以确保学习正确的答案。

无论如何,我添加了大约 200 张幻灯片,然后遇到了问题。运行某个幻灯片后,复制该幻灯片的 VBA 代码开始导致简单的代码行出现“无效函数”错误:oSld.Copy。然后我尝试在幻灯片编辑窗口中使用 CTRL+C 手动复制幻灯片,我得到了类似的错误,但措辞不同;类似这样的内容:“很抱歉,出现了可能导致 PowerPoint 不稳定的问题。请保存您的演示文稿并重新启动 PowerPoint。”

我对这种奇怪的行为感到完全困惑,并认为 PowerPoint 可能对幻灯片的数量犹豫不决,所以,我将幻灯片的数量减少到只有 15 张左右,但是,同一张幻灯片仍然在 oSld.Copy 和 CTRL+ 上引起了问题C。

4

1 回答 1

1

我花了几个小时试图缩小错误发生的位置,并且它似乎一直与这张幻灯片相关联的时间最长。但后来,我碰巧在另一张幻灯片上遇到了同样的错误。共同点是他们在幻灯片上都有不寻常的动画。具体来说,在两张幻灯片上,我有一组形状,该组使用“线条”动画制作动画,该动画将一组形状从一个点移动到另一个点。

当我从这些幻灯片中删除动画时,oSld.Copy 和使用 CTRL+C 时都不再出现错误。

我的解决方法(到目前为止有效)是在将源幻灯片复制到演示文稿末尾之后,我添加了代码以从源幻灯片中删除动画。幸运的是,复制错误似乎只发生在尝试复制具有复杂动画的第二张幻灯片时,而不是在复制具有复杂动画的第一张幻灯片之后。因此,通过在复制幻灯片后删除复杂动画,动画在演示结束时被正确复制到幻灯片,但显然从源幻灯片中删除动画可以防止复制下一张复杂动画幻灯片时出现问题。

我修改了 PowerPoint Alchemy 的 John Wilson 的代码以删除动画,如下所示:

Sub DeleteAnimations()
    Dim i As Integer
    Dim t As Integer
    Dim osld As Slide

    'delete anims from just the current slide
    Set osld = ActivePresentation.Slides(ActivePresentation.SlideShowWindow.View.CurrentShowPosition)

    'Remove normal animations
    For i = osld.TimeLine.MainSequence.Count To 1 Step -1
        osld.TimeLine.MainSequence(i).Delete
    Next i

    'Remove triggers
    For i = osld.TimeLine.InteractiveSequences.Count To 1 Step -1
        For t = osld.TimeLine.InteractiveSequences(i).Count To 1 Step -1
            osld.TimeLine.InteractiveSequences(i).Item(t).Delete
        Next t
    Next i
End Sub

我正在努力摆脱这个错误,因为我花了很长时间才弄清楚,我希望在这里发布这些信息可以帮助其他一些人。

于 2015-11-19T20:03:49.920 回答