0

简短版:在 PowerPoint 幻灯片中嵌入控件以将事件发送回应用程序级加载项的首选方法是什么?控件需要在幻灯片放映模式和设计模式下工作。

长版:

我最近参与了 PowerPoint 旧插件的开发,它(简而言之)从远程数据源中提取数据并在幻灯片上绘制相应的图表。加载项是托管代码 (C#),但不是使用 VSTO 构建的 - 它使用自定义包装器和 COM 填充程序。

图表需要定期刷新,为此我们的插件在工具栏中有一个刷新按钮。如果图表在刷新之前根本无法呈现,我们还会在幻灯片本身上嵌入一个 MSForms.CommandButton(作为 OLE 对象)。我们在类似的 Excel 加载项中成功使用了这种方法。

不幸的是,它在 PowerPoint 中不起作用:按钮上的单击事件似乎没有到达我们的加载项。我在网上找到了一些支持这一观察的信息。我还使用 MSForms.ComboBox 而不是按钮对其进行了测试,并且效果很好——组合框的更改事件到达我们的加载项并且刷新成功。

所以看来我需要找到一种替代方法让按钮与我们的加载项进行通信。我可以想到一些方法,并想知道是否有最佳实践:

  1. 让按钮(或类似形状)运行调用插件中代码的宏。我听说在设计模式下查看幻灯片时这可能不起作用,但尚未测试确认。
  2. 在幻灯片中嵌入一个 MSForms 表单,以捕获单击事件并将其传递给我们的加载项。同样,这只是一个理论,尚未经过测试。
  3. 完全使用其他东西 - 有些东西告诉我必须有一种“现代”的方式来做到这一点,我只是对 Office 开发不够熟悉,不知道那是什么。

我将补充一点,迁移到 VSTO 或类似技术(如 NetOffice)是一种选择,但如果可能,我们更愿意避免这种情况。谢谢!

4

0 回答 0