将变量从vba传递到.bat文件

时间:2018-06-27 17:56:04

标签: vba excel-vba batch-file cmd excel

我正在尝试将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文件后如何调用。

1 个答案:

答案 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

相关问题