首页 文章

从外部C#应用程序自动化PowerPoint VBA加载项

提问于
浏览
0

我正在设计一个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 回答

  • 0

    您将要使用 PPspliT_main 而不是 pres1.ppt'!PPspliT_main 作为最后一个参数 .

    包括 pres1.ppt 告诉PowerPoint专门查找该文件中的宏,而只要求宏名称应允许您调用加载的加载项中定义的任何Public子或函数 .

相关问题