Clever-Excel-Forum

Normale Version: Externe Anwendung aus Excel heraus starten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo meine Lieben,

wie kann ich mittels VBA Code eine externe Exe-Datei in einem Verzeichnis C:\Test
aufrufen. Ich möchte aus Excel heraus gerne eine Anwendung starten und
verwende eine Office 64 bit Version.

Danke für eure Hilfe
Hallo Christa,

im Prinzip so:

Sub test()
Shell "c:\windows\notepad.exe", 1
End Sub

Das wäre die einfachste Variante, Excel-VBA startet die Anwendung und macht unabhängig davon, was "draußen" passiert, weiter.
Komplex und Clever wäre das, wenn Du auf das Ende der Ausführung warten willst :
http://www.appspro.com/Downloads/ShellAndWait.zip

Das berücksichtigt auch die 64bit-Variante.
Codealternative zum Öffnen der Datei Beispiel.exe:
Code:
Dim myShell As Object
Set myShell = CreateObject("WScript.Shell")
myShell.Run Chr(34) & "C:\Verzeichnis\Beispiel.exe" & Chr(34)
Set myShell = Nothing

Nächste Frage:
Die Datei Beispiel.exe soll eine Textdatei öffnen. Ist es möglich das nach dem Aufruf der Datei Beispiel.exe aus Excel heraus,
dies ebenfalls durch VBA Programmierung möglich ist? Und vor allem wie wird das umgesetzt?
Hallo Christa,

wenn es sich um die Standardanwendung für einen bestimmten Dateityp handelt, reicht - hier am Beispiel von Notepad -
myShell.Run "notepad.exe d:\test\test.txt"

Die äußeren Anführungszeichen (chr(34)) sind eigentlich nicht notwendig.
Bei mir läuft es auch so - auch mit Leerzeichen im Namen usw.
myShell.Run "notepad.exe d:\test\test - Kopie.txt"
Hi Andre,

danke für den Hinweis. Aber bir genau dies das Problem.
Ich hatte erst alles nur in Anführungszeichen gesetzt
und nichts lief. Dann durch weitere Internetrecherche
und ausprobieren liefs dann.
Hallo Christa,
Kann schon sein - bei mir war das Gegenteil der Fall. Geht denn das öffnen so? Dann ist doch bestimmt noch mehr zu tun?
Hi,

""" :)

http://www.ms-office-forum.net/forum/sho...p?t=309448
im Beitrag ist auch noch ein Link der dies erklärt.

lg
Hallöchen,

wichtig ist der Hinweis im von Chris geposteten Link, dass wegen dem Leerzeichen im Pfad zur Anwendung die doppelten Anführungszeichen nötig sind. Das hat diese Bewandnis (suiehe dazu auch der weiterführende Link im zitierten Beitrag):

Beim Shell-Kommando wird der Textteil bis zum ersten Leerzeichen als Anwendung interpretiert und alles folgende als Paramater.

Wenn eine Anwendung mehrere Parameter verarbeitet, dann müsste man auch mit weiteren Anführungszeichen arbeiten, also z.B. in etwa so

Code:
myShell.Run """C:\Program Files (x86)\Notepad++\notepad++.exe"" ""d:\test\test - Kopie.txt"" ""d:\test\test.txt"""

andere Varianten
myShell.Run """C:\Program Files (x86)\Notepad++\notepad++.exe"" d:\test\test - Kopie.txt"
myShell.Run Chr(34) & "C:\Program Files (x86)\Notepad++\notepad++.exe" & Chr(34) & " d:\test\test - Kopie.txt"
myShell.Run "d:\test\npp\notepad++.exe d:\test\test - Kopie.txt", 1, True

Mit dem chr(34) spart man sich ganz clever ein paar Anführungszeichen, weil das im Gegensatz zu dem eigentlichen Anführungszeichen nicht als Textbegrenzungszeichen interpretiert wird. Will man Anführungszeichen übergeben, ohne chr(34), muss man halt ein paar mehr schreiben Sad

Die beiden Run-Parameter am Ende (...1, False) steuern die Anzeige (minimiert = True / Normal = False) sowie das Warteverhalten (warten = True / nicht warten = False)