通过VBScript在Powerpoint中打开用户表单

通过VBScript在Powerpoint中打开用户表单,vbscript,powerpoint,Vbscript,Powerpoint,我正在尝试打开一个用户表单,该表单是我通过VBScript在PPTM文件中创建的。VB脚本的代码如下所示。这似乎确实奏效了。只需打开并关闭宏PPTM。有什么建议吗 Option Explicit Dim pptApp, pptPresentation, CurrentDirectory dim fso: set fso = CreateObject("Scripting.FileSystemObject") CurrentDirectory = fso.GetAbsolutePathNam

我正在尝试打开一个用户表单,该表单是我通过VBScript在PPTM文件中创建的。VB脚本的代码如下所示。这似乎确实奏效了。只需打开并关闭宏PPTM。有什么建议吗

Option Explicit

Dim pptApp, pptPresentation, CurrentDirectory

dim fso: set fso = CreateObject("Scripting.FileSystemObject")

CurrentDirectory = fso.GetAbsolutePathName(".")

Set pptApp = CreateObject("PowerPoint.Application")
Set pptPresentation = pptApp.Presentations.Open(CurrentDirectory + "\Revison Macro V1.pptm",True)

On Error Resume Next
pptApp.Run "Revision"
If Err Then

End If

pptPresentation.Close
pptApp.Quit

Set pptPresentation = Nothing
Set pptApp = Nothing

WScript.Quit
一些代码修订

  • Set-pptPresentation=pptApp.Presentations.Open(CurrentDirectory+“\Revison Macro V1.pptm”,True)
    >>VBScript使用“&”而不是“+”,即使这样做效果很好,最好还是坚持正确的字符串处理方式
  • 需要间接调用userform以暂停vbscript。因此,创建一个单独的
    Sub
    ,并将其称为“call_Revision”。代码将简单明了,如下所示:

    Sub Call_Revision
        Revision.Show
    End Sub
    
  • 当您执行
    .Run
    命令时,它需要知道如何找到运行UserForm的代码。现在我们已经建立了sub,我们可以用它来显示表单

    发件人:
    pptApp.Run“Revision”

    至:
    pptApp.Run“Revison Macro V1.pptm!Module1.Call\u Revision”

  • 如果您正在等待用户关闭userform以执行其余代码并退出PPTM文件,则可以在userform中应用以下OnClose事件:

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
         Application.Quit
    End Sub
    
    完整代码:

    Option Explicit
    Dim currppt : currppt = "Revison Macro V1.pptm"
    Dim ModuleName: ModuleName = "Module1"
    Dim OpenUF : OpenUF = "Call_Revision"
    Dim pptApp, pptPresentation, CurrentDirectory
    dim fso: set fso = CreateObject("Scripting.FileSystemObject")
    CurrentDirectory = fso.GetAbsolutePathName(".")
    Set pptApp = CreateObject("PowerPoint.Application")
    Set pptPresentation = pptApp.Presentations.Open(CurrentDirectory & "\" & currppt,True)
    On Error Resume Next
    pptApp.Run currppt & "!" & ModuleName & "." & OpenUF
    msgbox "Done"
    
    pptPresentation.Close
    pptApp.Quit
    
    Set pptPresentation = Nothing
    Set pptApp = Nothing
    

  • 我猜你的意思是说它不工作,对吗?@PhilipAllgaier:是的,它工作不正常。它应该显示我在PPTM文件中创建的用户表单。但事实并非如此。有什么建议吗?那么请编辑你的问题,因为现在它说的是不同的东西。@HarshitPandey我的回答对你有帮助吗?