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
Anzeige