VBA for PPT,我没有重置PPT幻灯片,该怎么办?

时间:2019-03-04 17:07:21

标签: vba visual-studio powerpoint powerpoint-vba powerpoint2016

好的,我正在制作一个Power Point游戏,并且此Macro需要100%的游戏正常运行。

我希望宏/代码执行的操作是重置演示文稿中所有幻灯片的计时器(重新启动幻灯片上所有动画的结果)。因为我的游戏的核心是动画,所以大多数动画一旦播放过一次就不会再播放。

现在,我发现此命令很有用,但由于它仅会重置当前幻灯片,因此无法使其与演示文稿中的其余幻灯片一起使用。

SlideShowWindows(1).View.ResetSlideTime

我发现自己试图按照自己的意愿想出一种方法来完成这项工作,但失败了很多,仅仅三天,只是寻找新的命令来完成这项工作而已。

现在我对VBA不太了解,我更像是JavaSE专家,但我认为有一种方法可以使其中一些代码正常工作。

Sub RefreshSlides()

    Dim lSlideIndex As Long

    lSlideIndex = SlideShowWindows(1).View.CurrentShowPosition

    SlideShowWindows(1).View.GotoSlide lSlideIndex

    End Sub

此幻灯片仅重置当前幻灯片,但我寄予厚望,可以对其进行修改以实际重置演示文稿中的所有幻灯片。

我一直在寻找2012年以来的论坛,facebook组甚至博客,以查看是否有人做过类似的事情,但我发现了一些类似的事情,但不是我所需要的,我在这里发布的代码就是我由“可能”的解决方案组成,它们可以编译,但没有存档可重置所有幻灯片。

[游戏说明] 好的,这很棘手,但我会尽力向自己解释。我的游戏是动作游戏,每张幻灯片都说幻灯片是游戏的“核心”:如果您想向前移动,请单击一个超链接,该超链接会将您带到游戏的下一个“区域”,即另一个幻灯片不同的对象和动画,直到您进入下一张幻灯片(它们永远循环),大多数时候这些动画才结束。但是当您在游戏中“战斗”时,我不允许这些动画“循环” ,因为我还使用转换计时器将您带到下一张幻灯片。翻译:您击中敌人,它会立即显示动画,一旦经过一定的时间,过渡会将您发送到下一张幻灯片,如果动画处于“循环”模式,我将无法使用过渡计时器来获取您进入下一张幻灯片。这就是为什么动画只播放一次,如果您“丢失”,则必须再次战斗,而这些动画不再播放,它看起来就很正常。

重要更新

Sub Reiniciar()
  SlideShowWindows(1).View.ResetSlideTime
  SlideShowWindows(1).View.GotoSlide (3)
  SlideShowWindows(1).View.GotoSlide (2)
  SlideShowWindows(1).View.GotoSlide (1)
End Sub

这是一个非常原始的方法,但是实际上它会重新启动我选择的所有幻灯片,但是当方法工作时,它会让您失望,即使您只是一小段时间,它也会向您显示所有选定的幻灯片,必须有一种重新启动所有幻灯片的方法 1)无需选择所有幻灯片。 2)无需浏览整个游戏幻灯片。

更新#2 我目前正在编写此代码,有人在2014年编写了此代码,但是我无法使其正常工作。

Sub testingSlideReset()
    For i = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides(i).Select
        Application.CommandBars.ExecuteMso ("SlideReset")
        Next i
End Sub

一些开发人员告诉这位导师,可以在Next i语句之前使用“ DoEvents命令”修复该代码,但这只是行不通,我不知道为什么。

来源:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/ad0270e2-16d4-46fa-96de-df3e6fa34e83/vba-8211-reseting-all-slides-in-powerpoint?forum=officegeneral

这是我的代码版本:

Sub SlidesReset()
    For i = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides(i).Select
        DoEvents
        Application.CommandBars.ExecuteMso ("SlideReset")
        Next i
End Sub

(不起作用,我正试图找出原因。)

因此,我将不断更新它,直到有更好的解决方案为止。

如果有人可以帮助我,我将不胜感激,我的意思是很多。

0 个答案:

没有答案