Как вы запускаете .exe с параметрами, используя оболочку vba ()?

20

У меня есть путь к целевому файлу, который структурирован как пример ниже.

C:\Program Files\Test\foobar.exe /G

Что мне нужно сделать, так это выполнить этот файл с помощью команды vba shell().

Как мне форматировать путь к файлу, чтобы сообщить shell(), что есть аргумент, который ему нужно вызвать вместе с запуском .exe

То, что я прочитал/попробовал (безрезультатно), приведен ниже с результатами справа.

file = """C:\Program Files\Test\foobar.exe"" /G"    <---Bad file name or number (Error 52) 
shell(file)

file2 = "C:\Program Files\Test\foobar.exe /G"       <---file never found
shell(file2)

Мне удалось запустить другой .exe, используя shell(), поэтому я знаю, что это не проблема с vba или функцией.

Пример:

works = "C:\Program Files\Test\test.exe"
shell(works)

Я не особенно знаком с процессом, связанным с выполнением файлов, для которых требуются дополнительные параметры, поэтому, если я пропущу или вам нужна дополнительная информация, пожалуйста, дайте мне знать.

  • 0
    Это должно работать. Однако в качестве обходного пути вы можете использовать пакетный файл, который вы создаете, а затем выполняете.
  • 0
    @Olaf. Должны ли работать оба приведенных выше примера?
Теги:
excel-vba
parameters
command-line-arguments

3 ответа

25
Лучший ответ

Это работает для меня (Excel 2013):

Public Sub StartExeWithArgument()
    Dim strProgramName As String
    Dim strArgument As String

    strProgramName = "C:\Program Files\Test\foobar.exe"
    strArgument = "/G"

    Call Shell("""" & strProgramName & """ """ & strArgument & """", vbNormalFocus)
End Sub

С вдохновением отсюда https://stackoverflow.com/questions/3447667/open-with-options-through-vbscript.

  • 1
    Это также может представлять интерес: Запустить связанную программу .
  • 2
    Отличная работа, у меня есть небольшие трудности, чтобы обернуть голову вокруг двойных кавычек. Не могли бы вы уточнить это? Я понимаю, что вы должны добавить двойные кавычки к паре двойных кавычек, чтобы избежать их, поэтому добавляя пробел в середине, я получаю ... Но у меня нет начала и конца. Я получаю, что функции Shell должна быть передана строка, и что размещение двойных кавычек перед переменной приведет к тому, что переменная будет рассматриваться как строка ... но почему 4 набора двойных кавычек?
Показать ещё 3 комментария
5

Вот несколько примеров использования Shell в VBA.
Откройте stackoverflow в Chrome.

Call Shell("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" &
 " -url" & " " & "www.stackoverflow.com",vbMaximizedFocus)


Откройте текстовый файл.

Call Shell ("notepad C:\Users\user\Desktop\temp\TEST.txt")


Открыть приложение.

Call Shell("C:\Temp\TestApplication.exe",vbNormalFocus)


Надеюсь, это поможет!

  • 0
    Могу я спросить, какое значение имеет vbMaximizedFocus и vbNormalizedFocus? Кроме того, как мне работать с параметром, который вызывается вместе с файлом?
  • 1
    Это просто определяет, хотите ли вы, чтобы программа открывалась в развернутом окне или в окне нормального размера. Что касается аргументов, я просто думаю, что вы делаете что-то вроде этого: Shell (C: \ SomeApplication аргумент 1 аргумент 2). Также есть функция ShellExecute, которая предоставляет больше возможностей для вашего звонка.
-2

Нижеприведенный код поможет вам автоматически открыть файл .exe из excel...

Sub Auto_Open()

Dim x As Variant
Dim Path As String

' Set the Path variable equal to the path of your program installation
Path = "C:\Program Files\GameTop.com\Alien Shooter\game.exe"
x = Shell(Path, vbNormalFocus)

Конец Sub

Ещё вопросы

Сообщество Overcoder
Наверх
Меню