web-dev-qa-db-ja.com

vbaのShell()を使用して、パラメーターを指定して.exeを実行するにはどうすればよいですか?

次の例のような構造のターゲットファイルパスがあります。

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

私がする必要があるのは、vbaのShell()コマンドを使用してこのファイルを実行できることです。

.exeを実行するときに呼び出す必要がある引数があることをShell()に伝えるために、ファイルパスをフォーマットする必要があります。

私が読んだ/試してみた(仕様書なし)の結果は右にあります。

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)

Shell()を使用して他の.exeを実行することに成功したので、vbaまたは関数の問題ではないことがわかります。

例:

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

追加のパラメーターを必要とするファイルの実行に関係するプロセスについてはあまり詳しくないので、話を間違えたり、詳細な情報が必要な場合はお知らせください。

29
Austin A

これは私のために働きます(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/a/3448682

36
MBWise

VBAでシェルを使用する方法の例を次に示します。
Chromeでstackoverflowを開きます。

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)


お役に立てれば!

7
niklasolsn

以下のコードは、Excelから.exeファイルを自動的に開くのに役立ちます...

Sub Auto_Open()


    Dim x As Variant
    Dim Path As String

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

End Sub
0
Sameer