【问题标题】:How to stop PowerPoint 2013 crash when copying slides either in VBA or with CTRL+C如何在 VBA 或使用 CTRL+C 复制幻灯片时停止 PowerPoint 2013 崩溃
【发布时间】:2016-02-22 03:41:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: vba animation runtime-error powerpoint powerpoint-2013


    【解决方案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
    

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

    【讨论】:

    • 很高兴您找到了解决这个棘手错误的方法。但是,是否有某些原因导致您不能在数组中收集错误答案的幻灯片索引号,然后稍后将用户发送到数组中的每张幻灯片,或者将错误回答的幻灯片添加到您发送的自定义节目中用户到?这将是一个轻量级的好交易,并且会回避复制幻灯片的需要。
    • 好主意,史蒂夫。在出现此错误之前,将幻灯片复制到最后是非常容易的(当然,这对 CPU 来说有更多的工作)。当然可以创建一个数组——这是我没有考虑过的一种解决方法。我确实想跟踪用户两次出错的幻灯片,并通过将幻灯片复制到末尾的方法轻松完成,但也可以使用数组来完成。创建一个单独的节目不适合我的需要,因为我需要在他们完成标准幻灯片和重复幻灯片后,在最后总结他们在节目中的整体表现。
    • " 创建一个单独的节目无法满足我的需求,因为我需要在他们完成标准幻灯片和重复幻灯片后,在最后总结他们在节目中的整体表现。"我不是在建议一个单独的节目。自定义放映是大型放映中选定的一组幻灯片;这是一个内置的PPT功能。看看幻灯片|自定义幻灯片放映。在这种情况下可能有用。
    • 太棒了!我会研究那个功能。听起来这对这里有帮助吗。
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 2021-02-24
    • 2022-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2019-02-22
    相关资源
    最近更新 更多