无法从perl运行power point宏

时间:2014-12-13 22:37:56

标签: perl vba powerpoint

我有一个用powerpoint编写的宏,我需要从我的perl脚本调用它,可以使用 $ Excel-> Run(“MYMACRONAMEHERE”); 从Excel调用宏但是使用带有powerpoint的“运行”会出现以下错误:

“Microsoft PowerPoint 2010”中的OLE异常: Application.Run:无效的请求。子或函数未定义。 方法/属性中的Win32 :: OLE(0.1709)错误0x80048240“运行”

下面是perl我用来从powerpoint调用宏:

my $filename = "<path>";
my $PptApp  = Win32::OLE->GetActiveObject('PowerPoint.Application')|| Win32::OLE->new('PowerPoint.Application', 'Quit'); 
$PptApp->{Visible} = 1;
my $Presentation = $PptApp->Presentations->Open({FileName=>"$filename",ReadOnly=>0});
$PptApp->Run("macro_name");

2 个答案:

答案 0 :(得分:1)

您正在使用power point Application对象来运行Excel宏。那不行。您需要获取Excel的实例并使用其Application对象来运行Excel宏。或者,您可以将VBA代码复制到PowerPoint模块中。

答案 1 :(得分:0)

必须定义宏,并且我很确定,必须将其声明为Public。

并且,来自MSDN(http://msdn.microsoft.com/en-us/library/office/ff744221(v=office.15).aspx):

要运行的过程的名称。该字符串可以包含以下内容:加载的演示文稿或加载项文件名后跟感叹号(!),有效的模块名称后跟句点(。)和过程名称。例如,以下是有效的MacroName值:“MyPres.ppt!Module1.Test。”


但是,如果该过程被声明为Public并且是加载的加载项的一部分,则只需要提供过程名称。