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.