MS Office PowerPoint VBA编程支持还是调试模式?

MS Office PowerPoint VBA编程支持还是调试模式?,vba,debugging,powerpoint,Vba,Debugging,Powerpoint,我正在尝试使用VBA为PowerPoint开发一个小宏。然而,“开发环境”绝对是一场噩梦 最糟糕的是:似乎没有真正好的方法来生成调试输出!我读到Debug.Print输出应该进入即时窗口,但是那里什么也没有出现!因此,我目前正在使用MsgBox生成调试消息:-( 同样糟糕的是,宏中的错误总是会使PPT崩溃。因此,我们必须等待,直到它消失,然后重新启动它并排除所有恢复尝试。这总是需要很长时间 如果我设置了Error Resume Next,它就不会崩溃——至少不会经常崩溃——但接下来事情就不起作用

我正在尝试使用VBA为PowerPoint开发一个小宏。然而,“开发环境”绝对是一场噩梦

最糟糕的是:似乎没有真正好的方法来生成调试输出!我读到Debug.Print输出应该进入即时窗口,但是那里什么也没有出现!因此,我目前正在使用MsgBox生成调试消息:-(

同样糟糕的是,宏中的错误总是会使PPT崩溃。因此,我们必须等待,直到它消失,然后重新启动它并排除所有恢复尝试。这总是需要很长时间

如果我设置了Error Resume Next,它就不会崩溃——至少不会经常崩溃——但接下来事情就不起作用了,我也看不出哪里出了问题,为什么出了问题(除非我用MsgBox调用粘贴代码,但这需要在每次执行过程中点击10万次)

在调试器中运行代码并单步执行代码也不起作用,因为我的宏引用了当前的“ActivePresentation”,除非启动幻灯片模式,否则它似乎不存在。因此,这种调试快把我逼疯了

这真的是开发VBA代码的唯一可能性或环境吗?至少是一些关于调试输出的想法,有人吗

M

最糟糕的是:似乎没有真正好的方法来生成调试输出!我读到debug.Print输出应该进入即时窗口,但那里没有显示任何内容

冒着听起来有侮辱性的风险(我不是有意的!)您是否打开了即时窗口?在IDE中,按Ctrl+G以查看是否有新的显示。如果是,则这是即时窗口

真正糟糕的是,宏中的错误总是会使PPT崩溃

不正常。当然,这种情况可能会发生;您的代码可能会触发PPT中的一个错误。天知道,我在PPT 2002和2007中遇到了太多这样的问题。如果您使用了合理的错误处理,但仍然遇到了使PPT崩溃的错误,那么在代码运行时逐步检查代码至少可以将其缩小到第0行造成撞车的是r 2

在调试器中运行代码并单步执行代码也不起作用,因为我的宏引用了当前的“ActivePresentation”,除非启动幻灯片模式,否则它似乎不存在

同样,不是。ActivePresentation指的是应用程序中具有焦点的任何演示文稿,无论是在幻灯片放映还是任何其他视图中。如果您的代码在一个演示文稿中,并且应该作用在另一个演示文稿上,这可能会造成一些混乱,但您只需切换到普通视图,请确保您要访问的演示文稿是可见的e(我要确保视图中没有几个),然后Alt+F11返回IDE并运行代码

所有这些建议都适用于任何Windows版本的PPT,回到Office 97(Mac?认为不同。如果您使用的是Mac,请提及这一点。有一些不同之处,但在大多数情况下,除Alt+F11外,上述所有建议都适用)


如果这些似乎对您的设置没有帮助,那么可能是时候对Office进行修复了。

是的,我确实打开了即时窗口!:-)@remark2:我想我的宏一定触发了这样的错误,因为在调试过程中它几乎总是崩溃(同时我发现了问题,只是应用程序的一个成员不存在-我复制了一个应该在Excel下运行的代码段,而不是PPT)。@remark3:我最初指的不是ActivePresentation,而是ActiveWindow。这导致在运行演示模式时访问其任何成员时崩溃(所以我假设它在演示模式下为空)。使用ActivePresentation.SlideShowWindow.View,我开始工作了,但这只在演示模式下起作用…而且我只有一个演示,至少在开发这个宏的过程中肯定是这样的…无论什么原因:Debug.Print“…”现在确实产生了输出。我不明白为什么这以前不起作用,我希望它保持这种状态。你的评论让我再试一次,所以它已经帮了我很大的忙!谢谢!顺便问一下,你使用的是什么版本的PowerPoint?如果是2007年,它是一个错误农场;你肯定要将所有MS修补程序应用到Service Pack 3,包括Service Pack 3。然后,dep在结束您尝试执行的操作后,从ActivePresentation向下钻取比从文档窗口/幻灯片窗口向下钻取更容易。ActivePresentation将是您在幻灯片放映视图中查看的当前演示文稿,或如前所述在普通视图中看到的当前演示文稿。