在PowerPoint for Mac中计划VBA代码

时间:2019-06-14 13:51:43

标签: vba macos timer powerpoint powerpoint-vba

我需要计划一段VBA代码,以便在Mac版Microsoft PowerPoint(版本16)中每500毫秒运行一次。

在Word和Excel中,我可以使用Application.OnTime方法来计划代码,但是PowerPoint中不存在该方法,并且粒度为1秒。

在Windows上,我可以使用外部调用SetTimer库中的user32函数,例如在this question中。但是,我似乎在macOS上找不到等效的库方法。

我最好的选择似乎是编写一个实用程序库,其接口类似于在Windows上使用NSTimerGrand Central Dispatch或Pthread实现的SetTimer,然后安装它从VBA调用它,然后间隔调用它。

我的Mac开发经验有限,并且没有从VBA编写和调用外部库的经验,但是我设法实现了对C / Objective-C库的往返调用/回调(基本上{{1 }}称为void CallFunction(void (*function_pointer)(void)) { function_pointer(); }),但是当我尝试通过Grand Central Dispatch或Pthread推迟该回调时,一旦发生CallFunction(AddressOf Callback)异常和日志的回调,PowerPoint就会崩溃容易破译。我可以想象问题是回调是从另一个线程发生的,或者回调函数不在调用EXC_BAD_ACCESS时的地址处。

是否有现成的解决方案来安排PowerPoint for Mac中的VBA代码? 另外,是否有任何资源可以帮助我调试回调崩溃?

0 个答案:

没有答案