我正在设计一个 C# 应用程序,它将打开一个 PowerPoint 演示文稿,将带有动画的幻灯片拆分为单独的幻灯片,然后将整个演示文稿导出为一系列 JPG 图像。我在 Visual Studio 2010 和 Microsoft Office 2010 中工作。
该项目以PPspliT为中心,这是另一个开发人员慷慨提供的 VBA 宏和插件,并且运行良好!(谢谢!)本质上,我希望使用外部 C# 应用程序(而不是另一个宏或 Office 加载项)自动执行此加载项。我当前的代码基于Microsoft 的一个有用示例。如果要转换的 PowerPoint 文件包含PPspliT_main
宏,RunMacro
则示例中的函数在这样使用时可以正常工作:
RunMacro(oPP, new Object[]{"'pres1.ppt'!PPspliT_main"});
但是,如果宏未保存在 PowerPoint 文件本身中,则RunMacro
函数的代码会抛出 a TargetInvocationException
,因为宏不存在(即使安装了加载项)。我希望能够利用加载项的功能,以便可以操作任何 PowerPoint 文件,而不仅仅是其中保存了宏的文件。我想有一种简单的方法可以做到这一点。
一个类似于 的函数Application.CommandBars.ExecuteMso("Copy")
似乎正是我所需要的,但从我读过的内容来看,听起来只有内置函数有一个 idMso,但没有自定义函数(比如这个)。这是真的?或者我可能需要编辑 PPspliT 宏代码本身以“公开”它,以便从我的 C# 应用程序中调用它?
我已经进行了大量搜索以寻找解决方案,并且发现了许多与我正在寻找的相似的文章/帖子,但它们似乎都不同,以至于它们不适用于我的情况。我是使用宏/加载项的新手,所以我的术语/理解也可能有点偏离。
任何指导将不胜感激。在此先感谢您的帮助!