命令行执行VBScript文件执行VBA宏未能产生msgbox

QHa*_*arr 2 vbscript excel vba

情况:

我正在尝试从 Windows 命令行运行 VBScript。该脚本打开 excel,导入一个.bas文件并在其中运行宏。该宏随后应显示一个 VBA MsgBox。

  1. 如果我.vbs在桌面上右键单击该文件,然后选择Run VBScript,它就可以完美运行。

右键单击并运行 VBScript

  1. 如果我从命令行执行以下命令,在正确的位置(即桌面),虽然一切似乎都没有错误地运行,但不会显示 MsgBox。

    Test.vbs
    
    Run Code Online (Sandbox Code Playgroud)

我尝试过的:

我看了很多文章,其中一些我列为参考。特别是,我努力完成了这个答案。我已经尝试过类似的事情:

CScript Test.vbs
WScript Test.vbs
CScript //logo Test.vbs
WScript //nologo Test.vbs
Run Code Online (Sandbox Code Playgroud)

阅读该答案后,我确认 Windows 知道如何启动 .vbs 文件,这似乎不言而喻,因为我可以右键单击并运行。

所以:

1)跑步 assoc .vbs给了我预期的:

:\Windows\System32>assoc .vbs
.vbs=VBSFile
Run Code Online (Sandbox Code Playgroud)

2)运行ftype VBSFile给出了预期:

VBSFile="%SystemRoot%\System32\WScript.exe" "%1" %*
Run Code Online (Sandbox Code Playgroud)

3)我尝试在命令行字符串中添加暂停和等待时间,但无济于事。

4)我添加了各种标志,包括调试,例如CScript //X ,没有区别。

题:

如何从命令行运行我的 VBScript 并显示 msgbox?

VBSCript (Test.vbs)

Option Explicit

Sub ExcelMacroExample() 
  Dim xlApp 
  Dim xlBook 
  Set xlApp = CreateObject("Excel.Application") 
  Set xlBook = xlApp.Workbooks.Open("C:\Users\User\Desktop\Test.xlsb", 0, True) 
  xlApp.VBE.ActiveVBProject.VBComponents.Import "C:\Users\User\Desktop\Test.bas"
  xlApp.DisplayAlerts = False
  xlApp.Run "MessageMe"
  xlApp.Wait Now + TimeSerial(0,0,2)
  'xlApp.Quit 
  xlApp.DisplayAlerts = True
 ' Set xlBook = Nothing 
 ' Set xlApp = Nothing 
End Sub 
Run Code Online (Sandbox Code Playgroud)

测试数据库

Public Sub MessageMe
   Msgbox "Hello"
End Sub
Run Code Online (Sandbox Code Playgroud)

笔记:

所有文件都驻留在桌面文件夹中。

参考:

  1. 从命令行运行脚本
  2. VBS 文件不通过 cmd 提示符运行
  3. 从命令提示符运行脚本
  4. 如何在没有 Cscript/Wscript 的情况下从命令行运行 VBScript

Wil*_*eth 5

在您的主 VBS 中,您在 MessageMe 中的代码不会运行。您需要包含调用 MessageMe Sub 的代码。

另外,在cscript中,大多数人使用而不是MsgBox,但显然(对我来说是新的)MsgBox也弹出......

WScript.Echo "From Main"

Call MessageMe

Public Sub MessageMe
    ' WScript.Echo "Hello"
    MsgBox "Hello"
End Sub
Run Code Online (Sandbox Code Playgroud)