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

Forumthread: Mit VBA cmd aufrufen und .bat Datei ausführen

Mit VBA cmd aufrufen und .bat Datei ausführen
20.01.2017 13:49:51
Johannes
Schönen guten tag zusammen,
ich bin mal wieder auf ein Problem gestossen, dass ich irgendwie mit gefährlichen Halbiwssen und bereits bestehenden Forenbeiträgen nicht lösen kann:
Ich möchte eigentlich nur eine .bat Datei mit der Eingabeaufforderung durch ein Makro ausführen.
Dim sh As Object
Set sh = CreateObject("WScript.Shell")
sh.Run "cmd.exe"
Das habe ich mir bisher zusammengebastelt, aber ich weis leider auch nicht weiter.
Könntet ihr mir bitte Starthilfe geben?
Vielen Dank und liebe Grüsse
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Batchdatei - prinzipiell...
20.01.2017 13:55:12
Case
Hallo, :-)
... so: ;-)
Option Explicit
Public Sub Main()
Dim dblCommand As Double
dblCommand = Shell("C:\Temp\Test.bat", 2)
End Sub
Servus
Case

AW: Batchdatei - prinzipiell...
20.01.2017 14:10:03
Johannes
Hallo Case,
was bedeutet die 2 nach dem Komma? Ich habe es jetzt mit meiner daei probiert und irgendwie passiert trotzdem nichts.
Wenn ich die bat Datei händisch ausführe gehts aber.
Liebe Grüsse
Anzeige
AW: Batchdatei - prinzipiell...
20.01.2017 14:25:22
Michael
Hi,
siehe z.B. hier: https://www.herber.de/mailing/vb/html/vafctshell.htm
Laß Dir mal dlbCommand in einer msgbox ausgeben: falls 0, ging es nicht, falls ungleich 0, wurde es ausgeführt.
Gruß,
Michael
;
Anzeige
Anzeige

Infobox / Tutorial

Mit VBA .bat Dateien über CMD ausführen


Schritt-für-Schritt-Anleitung

Um eine .bat Datei über VBA auszuführen, kannst du den folgenden Code verwenden. Dieser Code nutzt die Shell-Funktion, um den CMD-Befehl auszuführen:

Option Explicit
Public Sub RunBatchFile()
    Dim command As String
    command = "C:\Temp\Test.bat" ' Pfad zur Batch-Datei
    Shell command, vbNormalFocus
End Sub

Beachte, dass der Pfad zur Batch-Datei korrekt angegeben werden muss. Der Parameter vbNormalFocus sorgt dafür, dass das CMD-Fenster im Vordergrund erscheint.


Häufige Fehler und Lösungen

  • Batch-Datei wird nicht gefunden: Überprüfe den Pfad zur Batch-Datei, ob er korrekt ist, und dass die Datei existiert.

  • Keine Ausgabe oder Fehler: Wenn der Befehl Shell 0 zurückgibt, bedeutet dies, dass die Ausführung nicht erfolgreich war. Verwende MsgBox um den Rückgabewert zu prüfen:

Dim returnValue As Double
returnValue = Shell(command, vbNormalFocus)
MsgBox returnValue
  • Batch-Datei funktioniert nicht wie erwartet: Stelle sicher, dass alle CMD-Befehle in der Batch-Datei korrekt sind. Du kannst die Batch-Datei manuell in der Eingabeaufforderung testen.

Alternative Methoden

Wenn du mehr Kontrolle über die Ausführung benötigst, kannst du die WScript.Shell-Methode verwenden:

Dim shell As Object
Set shell = CreateObject("WScript.Shell")
shell.Run "cmd.exe /c C:\Temp\Test.bat", 1, True

Hierbei sorgt /c dafür, dass die CMD-Eingabeaufforderung nach Ausführung der Batch-Datei geschlossen wird.


Praktische Beispiele

  1. Batch-Datei mit Parametern ausführen:
Dim shell As Object
Set shell = CreateObject("WScript.Shell")
shell.Run "cmd.exe /c C:\Temp\Test.bat parameter1 parameter2", 1, True
  1. Batch-Datei zeitgesteuert ausführen, indem du eine geplante Aufgabe in Windows erstellst, die die Batch-Datei zu einem bestimmten Zeitpunkt ausführt.

Tipps für Profis

  • Nutze vbHide als zweiten Parameter in Shell, um das CMD-Fenster auszublenden, wenn du kein Benutzer-Interface benötigst.

  • Überprüfe den Rückgabewert der Batch-Datei durch die Verwendung von ErrorLevel in der Batch-Datei selbst, um zu verstehen, ob die Ausführung erfolgreich war.

  • Verwende cmd /k anstelle von cmd /c, wenn du das CMD-Fenster nach der Ausführung offen halten möchtest, um die Ausgaben zu sehen.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Shell und WScript.Shell?
Shell ist eine VBA-Funktion, während WScript.Shell ein COM-Objekt ist, das mehr Kontrolle über die Ausführung von Programmen bietet.

2. Wie kann ich eine Batch-Datei im Hintergrund ausführen?
Verwende den Parameter vbHide in der Shell-Funktion, um das CMD-Fenster auszublenden.

3. Warum wird meine Batch-Datei nicht ausgeführt?
Stelle sicher, dass der Pfad zur Batch-Datei korrekt ist und dass alle CMD-Befehle in der Batch-Datei korrekt sind. Teste die Batch-Datei manuell in der Eingabeaufforderung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige