MATLAB ActiveX与Python Win32COM之比较

2024-09-28 19:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将我用Python创建的程序迁移到MATLAB中。这个应用程序使用win32COM对Excel和PowerPoint进行读写操作,我假设ActiveX命令非常相似/完全相同,因为它是基于VBA的。如果有人能说明这一点,并帮助解决以下错误,我将不胜感激!!在

所以我有一个Python代码可以工作

PPT_App = win32com.client.Dispatch("PowerPoint.Application")
Presentation = PPT_App.Presentations.Add()
Cover_Slide = Presentation.Slides.Add(1,12)

但是当我把它转换成MATLAB时

^{pr2}$

它给出了第3行定义“封面幻灯片”的错误

Undefined function 'Add' for input arguments of type 'Interface.91493469_5A91_11CF_8700_00AA0060263B'.

有人知道为什么会发生这种情况吗?或者我在哪里可以找到关于ActiveX差异的信息?在


Tags: 命令程序addapp应用程序错误vbapresentation
1条回答
网友
1楼 · 发布于 2024-09-28 19:20:00

它们不是基于VBA的;相反,它是另一种方式,在VBA中可以做的任何事情,都可以用ActiveX来做(因此,可以用VBA做什么,也可以用MATLAB来做),但是COM对象公开的方法和属性是这些方法和属性中的一个超集(这样win32com可以让你更进一步)。在

您在这里看到的是,无论出于什么原因,SlidesCOM对象有一个名为Add的方法,该方法不能通过ActiveX使用。但是,您所拥有的是一个几乎同义的方法,称为^{},您可以在MATLAB中使用它。两者之间的唯一区别在于第二个参数;Add接受^{} enum中的一个值(值为12对应于空白幻灯片),其中AddSlide需要一个^{},可以通过^{}创建。具体地说,因为在我的例子中,“空白幻灯片”恰好是第七个可用的布局(当在“新幻灯片”下拉列表中计数时),您可以做的是

Presentation = PPT_App.Presentations.Add();
Layout = Presentation.SlideMaster.CustomLayouts.Item(7)
Presentation.Slides.AddSlide(1, Layout)

一般来说,请参考VBA文档来了解通过MATLAB可以实现的功能。根据我的经验,这个对象和一般COM对象之间的差异是有限的。在

相关问题 更多 >