我正在尝试删除带有动画的形状,以便在没有它们的情况下制作幻灯片打印屏幕。之后我想要他们回来,所以我使用撤消命令。问题是这个命令工作到很晚。我的意思是当我所有的 vba 代码结束时它会撤消,而我需要它在我调用命令时执行。我试图停止代码几秒钟但不工作。这是我正在使用的代码:
For Each sl In ActivePresentation.Slides
shapeNum = sl.Shapes.count
'ActivePresentation.Slides(1).Shapes(1).
While shapeNum <> 0
If sl.Shapes(shapeNum).AnimationSettings.Animate = msoTrue Then
animationNum = animationNum + 1
sl.Shapes(shapeNum).Delete
animationNum = animationNum + 1
End If
shapeNum = shapeNum - 1
Wend
Next
ActivePresentation.SaveAs "c:\dink_template\created_files", ppSaveAsPNG, msoTrue
If animationNum <> 0 Then
Application.CommandBars.ExecuteMso "Undo"
'to make the code stop for 5 seconds
waitTime = 5
Start = Timer
While Timer < Start + waitTime
Wend
End If
' Here the code continues doing several things
我还尝试放置一个 MsgBox 或其他方式来阻止我在这里看到的:http: //www.pptfaq.com/FAQ00466_Put_your_macro_to_Sleep.htm
但是没有任何作用,它会停留 5 秒,但在我完成代码之前撤消不起作用。有效的是使用调试器。如果我用调试器停止它,它可以工作,但我想在不使用调试器的情况下这样做,因为当我将代码作为宏时,我将无法使用它。