Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: externes Programm starten und auf Ausgabe warten

externes Programm starten und auf Ausgabe warten
12.10.2007 09:44:00
Peter
Hallo und einen guten Morgen !
Ich hoffe es kann mir jemand bei einem - für mich großen Problem helfen :
Ich will in VBA ein externes, älteres DOS-Programm starten, welches diverse Berechnungen aufgrund eines Eingabefiles durchführt.
Diese Berechnungen können aber unter Umständen auch zu einem Absturz mit einer Fehlermeldung führen.
Wird das Programm ordnungsgemäß ausgeführt, schreibt es ein Ausgabefile und wird beendet (manueller Start in der Console).
Ich habe es mit dem Befehl Shell("......",1) probiert. Hier passiert aber nicht das mindeste, der Bildschirm wurd kurz schwarz - aber kein Ausgabefile (mit gültigen Eingabedaten, die manuell ohne Abbruch funktionieren).
Was mach ich da falsch, bzw. wie kann ich das Programm trotzdem zum laufen bringen ?
Wie kann ich abfragen ob die Ausgabe erfolgreich war ?
Danke,
Peter

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: externes Programm starten und auf Ausgabe wart
12.10.2007 16:18:15
anton
Hallo Peter,
probier's mal so:
Code:

Sub b()
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "dein Programm", 1, True
End Sub


mfg Anton

AW: externes Programm starten und auf Ausgabe wart
15.10.2007 07:41:02
Peter
Guten Morgen !
Danke - funktioniert blendend !
Schönen Tag noch - Peter.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne Excel und gehe zum VBA-Editor (Alt + F11).

  2. Füge ein neues Modul ein: Rechtsklick auf "VBAProject", dann "Einfügen" und "Modul".

  3. 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.

  4. 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

  • Fehler: Das Programm startet nicht oder es wird kein Ausgabefile erstellt.

    • Lösung: Vergewissere dich, dass der Pfad zum Programm korrekt ist. Teste den Befehl in der Windows-Eingabeaufforderung, um sicherzustellen, dass das Programm auch dort funktioniert.
  • Fehler: VBA hängt oder bleibt stehen.

    • Lösung: Prüfe, ob das externe Programm Eingaben benötigt oder ob es im Hintergrund läuft.

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige