2

我正在研究 VBA,我必须通过传递一些值来调用 vbscript。

这是代码:

''VBA
'Below values are on different cells of Excel file which I am reading 
'into a global variable then pass it to vbscript.
'SFilename = VBscript file path
'QClogin = "abc"
'QCpassword = "abc"
'sDomain = "xyz"
'sProject = "xyz123"
'testPathALM = "Subject\xyz - Use it!\xyz_abc"
'QCurl = "http://xxx_yyy_zzz/qcbin/"
Set wshShell = CreateObject("Wscript.Shell")

Set proc = wshShell.exec("wscript " & SFilename & " " & QClogin & _
" " & "" & QCpassword & " " & "" & sDomain & " " & "" & sProject & _
" " & "" & testPathALM & " " & "" & QCurl & "")

''VBscript on some location
Dim strUserName, strPassword, strServer
strUserName = WScript.Arguments(0)  '"abc"
Msgbox "strUserName : " & strUserName
strPassword = WScript.Arguments(1)  '"abc"
Msgbox "strPassword : " & strPassword
strServer = WScript.Arguments(5)    '"http://xxx_yyy_zzz/qcbin/"
Msgbox "strServer : " & strServer

Dim strDomain, strProject, strRootNode
strDomain = WScript.Arguments(2)    '"xyz"
Msgbox "strDomain: " & strDomain
strProject = WScript.Arguments(3)   '"xyz123"
Msgbox "strProject: " & strProject
strRootNode = WScript.Arguments(4)  '"Subject\xyz - Use it!\xyz_abc"
Msgbox "strRootNode: " & strRootNode

现在,当我运行代码时,它会将以下值正确传递给 vbscript:

QClogin = "abc"
QCpassword = "abc"
sDomain = "xyz"
sProject = "xyz123"

它有这些问题:

testPathALM = "Subject\xyz - Use it!\xyz_abc"
QCurl = "http://xxx_yyy_zzz/qcbin/"

现在,对我来说奇怪的是,如果我将 testPathALM”的单元格保留为空,该单元格具有“Subject\xyz - Use it!\xyz_abc”作为值,我将在 vbscript 中正确获取“QCurl”值。

但是,如果我将值"Subject\xyz - Use it!\xyz_abc"保留为" testPathALM" ,那么我将得到"-"对于strServer,它假设是"QCurl"值和"Subject\xyz"对于"strRootNode "应该是"Subject\xyz - Use it!\xyz_abc"

我无法理解这里有什么问题。

提前致谢。

4

1 回答 1

5

更安全地引用所有参数:

Set wshShell = CreateObject("Wscript.Shell")
Set proc = wshShell.exec("wscript """ & SFilename & """ """ & _
                         QClogin & """ """ & QCpassword & """ """ & _
                         sDomain & """ """ & sProject   & """ """ & _
                         testPathALM & """ """ & QCurl & """")

尝试 debug.print 以确保它看起来应该......

于 2013-09-16T17:47:44.033 回答