Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Externe Anwendung aus Excel heraus starten
#1
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
Antwortento top
#2
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.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#3
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?
Antwortento top
#4
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"
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#5
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.
Antwortento top
#6
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?
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#7
Hi,

"""Smile

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

lg
lg Chris
Feedback nicht vergessen.
3a2920576572206973742064656e20646120736f206e65756769657269672e
 
hier war mal ein Bild bei meinen Beiträgen
aber welches nach zwei Jahrzehnten
anscheinend von der DSVGO
abgeschossen worden ist.  22


Antwortento top
#8
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)
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste