Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


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
to 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)
to 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?
to 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)
to 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.
to 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)
to 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
 ?mage

to 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 :-(

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)
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Frage zur Anwendung SVERWEIS und FINDEN MikeMax 11 168 01.12.2016, 18:57
Letzter Beitrag: shift-del
  [VBA] wert eines felds ändern und eine funktion starten sobald timer abläuft Rjinxil 7 245 01.10.2016, 15:10
Letzter Beitrag: Steffl
  Wenn/Dann Formel in Batch starten arthur 11 477 05.09.2016, 16:43
Letzter Beitrag: schauan
  Anwendung eines Filters Kobiii 13 605 23.08.2016, 10:45
Letzter Beitrag: Kobiii
  Bestehenden Solver über Makro starten Lokdog 5 442 08.08.2016, 09:22
Letzter Beitrag: Lokdog
  Externe Verknüpfungen INDIVIDUELL aktualisieren Albus1965 2 248 26.07.2016, 06:59
Letzter Beitrag: Rabe
  Makro starten, wenn zelleninhalt sich verändert KS20 11 572 19.07.2016, 14:33
Letzter Beitrag: KS20
  Makro starten, wenn Änderung in Spalte F exceljoe 1 289 27.05.2016, 13:03
Letzter Beitrag: Kuwer
  Externe Daten abrufen Hardbopper 28 1.750 25.04.2016, 08:54
Letzter Beitrag: Rabe
  Steuerelement soll Form einfügen "Skizze" starten Frnak_Castle 10 572 08.04.2016, 12:20
Letzter Beitrag: Frnak_Castle

Gehe zu:


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