首页 > 解决方案 > 在 PowerPoint for Mac 中安排 VBA 代码

问题描述

我需要安排一段 VBA 代码在 Microsoft PowerPoint for Mac(版本 16)中每 500 毫秒运行一次。

在 Word 和 Excel 中,我可以使用该Application.OnTime方法来安排代码,但该方法在 PowerPoint 中不存在,并且无论如何都有 1 秒的粒度。

SetTimer在 Windows 上,我可以使用对库中函数的外部调用user32,例如在这个问题中所做的那样。但是,我似乎在 macOS 上找不到等效的库方法。

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

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

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

标签: vbamacostimerpowerpoint

解决方案


推荐阅读