MATLAB ActiveX 与 Python Win32COM
MATLAB ActiveX vs. Python Win32COM
我正在尝试将我在 Python 中创建的程序迁移到 MATLAB。此应用程序使用 win32COM 到 write/read to/from Excel 和 PowerPoint,我假设 ActiveX 命令非常 similar/identical 因为它基于 VBA。如果有人能阐明这一点并帮助解决以下错误,我将不胜感激!!
所以我有一个 Python 有效的代码
PPT_App = win32com.client.Dispatch("PowerPoint.Application")
Presentation = PPT_App.Presentations.Add()
Cover_Slide = Presentation.Slides.Add(1,12)
然而,当我将其转换为 MATLAB 时;
PPT_App = actxserver('PowerPoint.Application');
Presentation = PPT_App.Presentations.Add();
Cover_Slide = Presentation.Slides.Add(1,12);
它在定义 'Cover_Slide';
的第 3 行给我这个错误
Undefined function 'Add' for input arguments of type 'Interface.91493469_5A91_11CF_8700_00AA0060263B'.
有谁知道为什么会这样,或者我在哪里可以找到有关 ActiveX 差异的信息?
它们不是基于 VBA;相反,它是相反的,你可以在 VBA 中做任何事情,你也可以用 ActiveX 做(特别是,你可以用 VBA 做的,你也可以用 MATLAB 做),但是 COM 对象公开的方法和属性是这些方法和属性的 超集 (因此 win32com
让您更进一步)。
您在这里看到的是,无论出于何种原因,Slides
COM 对象都有一个名为 Add
的方法,该方法无法通过 ActiveX 使用。不过,您所拥有的是一个几乎同义的方法,称为 AddSlide
which you can use in MATLAB. The only difference between the two is in the second parameter; Add
takes a value in the PpSlideLayout
enum (with the value of 12 corresponding to a blank slide), where AddSlide
expects a CustomLayout
, which you can create through Presentation.SlideMaster
。具体来说,因为在我的例子中 "blank slide" 恰好是第七个可用布局(当在 "New slide" 下拉列表中计算时),你可以做的是
Presentation = PPT_App.Presentations.Add();
Layout = Presentation.SlideMaster.CustomLayouts.Item(7)
Presentation.Slides.AddSlide(1, Layout)
一般来说,请参阅 VBA 文档以了解通过 MATLAB 可以实现的功能。根据我的经验,这与一般 COM 对象之间的差异是有限的。
我正在尝试将我在 Python 中创建的程序迁移到 MATLAB。此应用程序使用 win32COM 到 write/read to/from Excel 和 PowerPoint,我假设 ActiveX 命令非常 similar/identical 因为它基于 VBA。如果有人能阐明这一点并帮助解决以下错误,我将不胜感激!!
所以我有一个 Python 有效的代码
PPT_App = win32com.client.Dispatch("PowerPoint.Application")
Presentation = PPT_App.Presentations.Add()
Cover_Slide = Presentation.Slides.Add(1,12)
然而,当我将其转换为 MATLAB 时;
PPT_App = actxserver('PowerPoint.Application');
Presentation = PPT_App.Presentations.Add();
Cover_Slide = Presentation.Slides.Add(1,12);
它在定义 'Cover_Slide';
的第 3 行给我这个错误Undefined function 'Add' for input arguments of type 'Interface.91493469_5A91_11CF_8700_00AA0060263B'.
有谁知道为什么会这样,或者我在哪里可以找到有关 ActiveX 差异的信息?
它们不是基于 VBA;相反,它是相反的,你可以在 VBA 中做任何事情,你也可以用 ActiveX 做(特别是,你可以用 VBA 做的,你也可以用 MATLAB 做),但是 COM 对象公开的方法和属性是这些方法和属性的 超集 (因此 win32com
让您更进一步)。
您在这里看到的是,无论出于何种原因,Slides
COM 对象都有一个名为 Add
的方法,该方法无法通过 ActiveX 使用。不过,您所拥有的是一个几乎同义的方法,称为 AddSlide
which you can use in MATLAB. The only difference between the two is in the second parameter; Add
takes a value in the PpSlideLayout
enum (with the value of 12 corresponding to a blank slide), where AddSlide
expects a CustomLayout
, which you can create through Presentation.SlideMaster
。具体来说,因为在我的例子中 "blank slide" 恰好是第七个可用布局(当在 "New slide" 下拉列表中计算时),你可以做的是
Presentation = PPT_App.Presentations.Add();
Layout = Presentation.SlideMaster.CustomLayouts.Item(7)
Presentation.Slides.AddSlide(1, Layout)
一般来说,请参阅 VBA 文档以了解通过 MATLAB 可以实现的功能。根据我的经验,这与一般 COM 对象之间的差异是有限的。