情况:
我正在尝试从Windows命令行运行VBScript。该脚本打开excel,导入.bas
文件并在其中运行宏。然后宏应显示VBA MsgBox。
.vbs
文件,然后选择Run VBScript
,则效果非常好。如果我从命令行执行以下操作,在正确的位置(即桌面),虽然看起来一切都没有错误,但没有显示MsgBox。
Test.vbs
我尝试了什么:
我看了很多文章,其中一些我列为参考文献。特别是,我通过这个answer工作。我已经尝试过这样的事情:
CScript Test.vbs
WScript Test.vbs
CScript //logo Test.vbs
WScript //nologo Test.vbs
继续阅读该答案之后,我确认Windows知道如何启动.vbs文件,这似乎是不言而喻的,因为我可以右键单击并运行。
所以:
1)运行assoc .vbs
给了我预期的结果:
:\Windows\System32>assoc .vbs
.vbs=VBSFile
2)运行ftype VBSFile
给出了预期的结果:
VBSFile="%SystemRoot%\System32\WScript.exe" "%1" %*
3)我尝试将Pause和等待时间添加到命令行字符串无效。
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
Test.bas
Public Sub MessageMe
Msgbox "Hello"
End Sub
备注:
所有文件都驻留在Desktop文件夹中。
参考文献:
答案 0 :(得分:4)
在您的主VBS中,您的MessageMe中的代码将无法运行。您需要包含代码才能调用MessageMe Sub。
另外,在cscript中,大多数人使用而不是MsgBox,但显然(对我而言)MsgBox也会弹出......
WScript.Echo "From Main"
Call MessageMe
Public Sub MessageMe
' WScript.Echo "Hello"
MsgBox "Hello"
End Sub