我正在设计一个C#应用程序,它将打开PowerPoint演示文稿,将带有动画的幻灯片拆分为单独的幻灯片,然后将整个演示文稿导出为一系列JPG图像 . 我在使用Microsoft Office 2010的Visual Studio 2010中工作 .
该项目以PPspliT为中心,这是另一位开发人员慷慨提供的VBA宏和插件,而且效果非常好! (谢谢!)本质上,我希望使用外部C#应用程序(而不是另一个宏或Office加载项)自动化此加载项 . 我当前的代码基于a helpful example from Microsoft . 如果要转换的PowerPoint文件包含 PPspliT_main
宏,则示例中的 RunMacro
函数在使用时效果很好:
RunMacro(oPP, new Object[]{"'pres1.ppt'!PPspliT_main"});
但是,如果宏未保存在PowerPoint文件本身中, RunMacro
函数的代码将抛出 TargetInvocationException
因为宏不存在(即使安装了加载项) . 我希望能够利用加载项的功能,以便可以操作任何PowerPoint文件,而不仅仅是将宏保存在其中的文件 . 我想有一种简单的方法可以实现这一目标 .
类似于 Application.CommandBars.ExecuteMso("Copy")
的函数似乎正是我需要的,但是我需要编辑PPspliT宏代码本身到"expose"它才能从我的C#应用程序中调用它?
我已经做了大量的搜索解决方案,并且发现了很多与我正在寻找的文章/帖子类似的文章/帖子,但它们看起来都不同,以至于它们不适用于我的情况 . 我刚开始使用宏/加载项,所以我的术语/理解也可能有点过时了 .
任何指导将不胜感激 . 在此先感谢您的帮助!
1 回答
您将要使用
PPspliT_main
而不是pres1.ppt'!PPspliT_main
作为最后一个参数 .包括
pres1.ppt
告诉PowerPoint专门查找该文件中的宏,而只要求宏名称应允许您调用加载的加载项中定义的任何Public子或函数 .