Vba 使用批处理中的参数调用powerpoint宏

Vba 使用批处理中的参数调用powerpoint宏,vba,batch-file,powerpoint,Vba,Batch File,Powerpoint,我想从批处理文件中调用powerpoint宏,如下所示 “c:\program files\microsoft office\office14\POWERPNT.exe”/M x5_template.pptm宏_名称(参数) 问题是它在没有争论的情况下运行良好,但我的要求是通过争论。有没有关于如何传递论点的文字?好吧,你不能 但是,我使用以下策略来解决一些非常简单的情况。这可能不足以满足您的需求,因为它需要提前计划所有可能的参数 假设我有一个宏ChangeAllFont(newfont作为字符串

我想从批处理文件中调用powerpoint宏,如下所示

“c:\program files\microsoft office\office14\POWERPNT.exe”/M x5_template.pptm宏_名称(参数)

问题是它在没有争论的情况下运行良好,但我的要求是通过争论。有没有关于如何传递论点的文字?

好吧,你不能

但是,我使用以下策略来解决一些非常简单的情况。这可能不足以满足您的需求,因为它需要提前计划所有可能的参数

假设我有一个宏
ChangeAllFont(newfont作为字符串)
,它接受一个字符串参数

我声明了几个实用程序宏,它们使用一些所需参数调用宏。比如说,

Sub ChangeAllFontArial()
 Call ChangeAllFont("Arial")
End Sub
以及

然后我可能会在以后调用powerpoint作为

POWERPNT /M template.ppt ChangeAllFontArial

恐怕你不能

但是,我使用以下策略来解决一些非常简单的情况。这可能不足以满足您的需求,因为它需要提前计划所有可能的参数

假设我有一个宏
ChangeAllFont(newfont作为字符串)
,它接受一个字符串参数

我声明了几个实用程序宏,它们使用一些所需参数调用宏。比如说,

Sub ChangeAllFontArial()
 Call ChangeAllFont("Arial")
End Sub
以及

然后我可能会在以后调用powerpoint作为

POWERPNT /M template.ppt ChangeAllFontArial


另一种方法:编写一个EXE,在命令行上接受您的参数。 然后EXE调用PowerPoint并调用宏并传递任何必要的参数。 下面是一个可能有帮助的VB代码段:

Dim oPPTapp As Object
Set oPPTapp = New PowerPoint.Application

' make it visible if need be
oPPTapp.Visible = True  

If Err.Number <> 0 Then
    oPPTapp.Quit
    Set oPPTapp = Nothing
    Exit Sub
End If

' Call PPT VBA subroutine using Parameter, which you've
' parsed from the command line
oPPTapp.Run "NameOfSubRoutine", Parameter
Dim opptap作为对象
Set opptap=New PowerPoint.Application
“如果需要,使其可见
opptap.Visible=True
如果错误号为0,则
奥普塔普,退出
Set OPPTAP=无
出口接头
如果结束
'使用参数调用PPT VBA子例程
'已从命令行解析
opptap.Run“NameOfSubRoutine”,参数

如果使用第一个命令行parm作为要运行的宏的名称,然后将任何进一步的parm作为参数传递,则可以使其更通用。

另一种方法:在命令行上编写接受参数的EXE。 然后EXE调用PowerPoint并调用宏并传递任何必要的参数。 下面是一个可能有帮助的VB代码段:

Dim oPPTapp As Object
Set oPPTapp = New PowerPoint.Application

' make it visible if need be
oPPTapp.Visible = True  

If Err.Number <> 0 Then
    oPPTapp.Quit
    Set oPPTapp = Nothing
    Exit Sub
End If

' Call PPT VBA subroutine using Parameter, which you've
' parsed from the command line
oPPTapp.Run "NameOfSubRoutine", Parameter
Dim opptap作为对象
Set opptap=New PowerPoint.Application
“如果需要,使其可见
opptap.Visible=True
如果错误号为0,则
奥普塔普,退出
Set OPPTAP=无
出口接头
如果结束
'使用参数调用PPT VBA子例程
'已从命令行解析
opptap.Run“NameOfSubRoutine”,参数

如果使用第一个命令行parm作为要运行的宏的名称,然后将任何进一步的parm作为参数传递,则可以使它更通用。

我最初也想到过同样的方法,但我不想编写任何包装器,这就是问题所在。无论如何,创建了包装器,但错误为**应用程序。在运行vbs时运行无效的请求子或未定义的函数80048240**。您可能希望发布您正在使用的确切代码。我上面发布的代码片段是VB5/6代码,不是VBS,顺便说一句。此外,您尝试运行的PPT中的sub需要声明为Public,并且需要是加载的外接程序的一部分,或者需要托管在一个打开的PPT文件(即启动时加载的文件)中。我最初也想到了这一点,但我不想编写任何包装,这就是问题所在。无论如何,创建了包装器,但错误为**应用程序。在运行vbs时运行无效的请求子或未定义的函数80048240**。您可能希望发布您正在使用的确切代码。我上面发布的代码片段是VB5/6代码,不是VBS,顺便说一句。此外,您尝试运行的PPT中的子文件需要声明为公共的,并且需要是加载的外接程序的一部分,或者需要托管在打开的PPT文件(即启动时加载的文件)中。