我正在尝试将VBA单词中的变量传递给批处理文件。该变量是用户必须在其中输入用户名的输入框。然后,该批处理文件应采用该用户名,并对照我们目录中的AD组进行检查。我必须首先在VBA中显示变量,因为我需要在批处理文件运行后在VBA脚本中对其进行操作(除非将批处理变量传递到单词vba中会更容易)。我所做的所有研究都引导我遵循以下思路:
Dim val, r As String
r = InputBox("Please enter your username:")
val = "path\mybat.bat" & r
Call Shell(val, vbNormalFocus)
或:
Dim val, r As String
r = InputBox("Please enter your username:")
val = "path\mybat.bat r"
Call Shell(val, vbNormalFocus)
我在VBA中不断收到运行时错误53。我也不确定将变量传递到.bat文件后如何调用。
答案 0 :(得分:1)
val = "path\mybat.bat r"
r
只是字符串文字"path\mybat.bat r"
中的另一个字符-VBA应该如何得知您的意思是那个 r
来引用该本地变量r
变量?
val = "path\mybat.bat " & r 'note the trailing space in the string literal
将其用作变量:将其从字符串文字中拉出,并将其连接起来。
错误53为“找不到文件”。通过忘记尾随空格,您正在调用mybat.batAndWhateverRcontains
,这可能不是现有的文件名。因此,“找不到文件”。
还请注意以下常见陷阱:
Dim val, r As String
这将r
声明为String
,而将val
保留为隐式Variant
。
Dim val As String, r As String
将两个变量都声明为String
。