QHa*_*arr 2 vbscript excel vba
情况:
我正在尝试从 Windows 命令行运行 VBScript。该脚本打开 excel,导入一个.bas文件并在其中运行宏。该宏随后应显示一个 VBA MsgBox。
.vbs在桌面上右键单击该文件,然后选择Run VBScript,它就可以完美运行。如果我从命令行执行以下命令,在正确的位置(即桌面),虽然一切似乎都没有错误地运行,但不会显示 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)
笔记:
所有文件都驻留在桌面文件夹中。
参考:
在您的主 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)