How do you run a .exe with parameters using vba's shell()?

I have a target file path that is structured like example below.

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

What I need to do is be able to execute this file using VBA's shell() command.

How do I have to format the file path to tell Shell() that there is an argument that it needs to call along with running the .exe

What I've read/tried (with no avail) is below with the results to the right.

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)

I've succeeded with running other .exe's using shell() so I know it's not a problem with VBA or the function.

Example:

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

I'm not particularly familiar with the process involved with executing files that require additional parameters so if I misspeak or you need more information, please let me know.

2

4 Answers

This works for me (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

With inspiration from here .

5

Here are some examples of how to use Shell in VBA.
Open stackoverflow in Chrome.

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

Open some text file.

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

Open some application.

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

Hope this helps!

2

The below code will help you to auto open the .exe file from excel...

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
sTempBAT = "d:\tempLog.txt"
Set shellwindows = GetObject("new:9ba05972-f6a8-11cf-a442-00a0c90a8f39")
Set itemobj = shellwindows.Item()
itemobj.document.Application.ShellExecute sTempBAT, "", "", "open", 0

An alternative way to call shell function

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like