Externes Programm in VBA starten und auf Ausgabe warten
Schritt-für-Schritt-Anleitung
Um ein externes Programm in VBA zu starten und auf die Ausgabe zu warten, kannst Du den folgenden Ansatz nutzen:
-
Öffne Excel und gehe zum VBA-Editor (Alt + F11).
-
Füge ein neues Modul ein: Rechtsklick auf "VBAProject", dann "Einfügen" und "Modul".
-
Füge den folgenden Code ein:
Sub StarteExternesProgramm()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "dein_programm.exe", 1, True
End Sub
Ersetze "dein_programm.exe" mit dem Pfad zu Deinem externen Programm.
-
Führe das Makro aus: Drücke F5 oder gehe auf "Run" > "Run Sub/UserForm".
Mit dieser Methode wird das externe Programm gestartet und VBA wartet, bis das Programm beendet ist, bevor es fortfährt.
Häufige Fehler und Lösungen
Alternative Methoden
Wenn Du eine Alternative zur Verwendung von WScript.Shell suchst, kannst Du auch die Shell-Funktion verwenden, allerdings ohne auf die Beendigung des Prozesses zu warten. Um auf die Ausgabe zu warten, ist die erste Methode jedoch empfehlenswerter.
Ein Beispiel mit Shell:
Sub StarteProgrammOhneWarten()
Shell "dein_programm.exe", vbNormalFocus
End Sub
Hierbei wird das Programm gestartet, und VBA fährt sofort fort, ohne auf die Beendigung des Programms zu warten.
Praktische Beispiele
Ein häufiges Szenario könnte sein, dass Du ein älteres DOS-Programm startest, das Berechnungen durchführt. Hier ist ein Beispiel, wie Du ein solches Programm starten kannst:
Sub BerechnungenDurchfuehren()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\Programme\dein_programm.exe", 1, True
' Hier kannst Du den Code hinzufügen, um die Ausgabe zu verarbeiten
End Sub
Stelle sicher, dass Du den richtigen Pfad zum Programm verwendet hast.
Tipps für Profis
- Prozessüberwachung: Du kannst den Prozess überwachen, um zu überprüfen, ob er erfolgreich abgeschlossen wurde.
- Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um mit Fehlermeldungen des externen Programms umzugehen.
- Verwendung von
ShellExecute: In fortgeschrittenen Szenarien kannst Du die API-Funktion ShellExecute verwenden, um detailliertere Kontrolle über das externe Programm zu erhalten.
FAQ: Häufige Fragen
1. Wie kann ich den Status des externen Programms abfragen?
Verwende WshShell.Exec, um mehr Kontrolle zu erhalten und den Status des Programms abzufragen.
2. Was mache ich, wenn das Programm abstürzt?
Implementiere eine Fehlerbehandlung in Deinem VBA-Code, um auf solche Fälle zu reagieren und entsprechende Meldungen auszugeben.
3. Funktioniert dies in allen Excel-Versionen?
Ja, das beschriebene Vorgehen funktioniert in den meisten Excel-Versionen, die VBA unterstützen.