Передача переменной из vba в файл .bat - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь передать переменную из слова 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)

Я продолжаю получать ошибку 53 во время выполнения в VBA. Я также не уверен, как вызывать переменную после ее передачи в файл .bat.

1 Ответ

0 голосов
/ 27 июня 2018
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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...