ich möchte über ein VB-Makro eine cmd-Datei starten, bekomme es aber über den Shell-Befehl nicht hin. Kann mir jemand weiterhelfen? Ich habe folgende Möglichkeit ausprobiert:
Shell "C:\test.cmd"
Viele Grüße
Cengiz
Sub tt()
Shell ("c:\test\test.bat")
End Sub
Öffne Excel und gehe zu den Entwicklertools. Falls die Entwicklertools nicht sichtbar sind, kannst Du sie über die Excel-Optionen aktivieren.
Erstelle ein neues Modul:
Gib den Shell-Befehl ein:
Um die cmd-Datei auszuführen, kannst Du den folgenden VBA-Code verwenden:
Sub cmdDateiAusfuehren()
Shell "cmd /C C:\test.cmd"
End Sub
Passe den Pfad an: Stelle sicher, dass der Pfad zur cmd-Datei korrekt ist. Zum Beispiel:
Shell "cmd /C C:\MeinOrdner\deineDatei.cmd"
Führe das Makro aus: Drücke F5 oder klicke auf "Run", um das Makro auszuführen.
Fehler: Leere Ausgabedatei: Wenn die TXT-Datei leer bleibt, überprüfe, ob die Pfade in der cmd-Datei korrekt sind. Verwende vollständige Pfade in der copy-Anweisung, z.B.:
copy "C:\MeinOrdner\*_UN.csv" "C:\MeinOrdner\xDB_UN.txt"
Fehler: Cmd-Datei wird nicht ausgeführt: Stelle sicher, dass Du den richtigen Befehl verwendest:
Shell "cmd /C C:\test.cmd"
Fehler: Zugriffsprobleme: Wenn Excel geöffnet ist, kann dies den Zugriff auf die Dateien verhindern. Schließe alle relevanten Excel-Dateien oder starte Excel im abgesicherten Modus.
Direktes Ausführen des Befehls: Du kannst den gewünschten cmd-Befehl auch direkt im VBA-Code ausführen, ohne eine cmd-Datei:
Shell "cmd /C copy C:\mytest\*_UN.csv C:\mytest\xDB_UN.txt"
Verwendung von ShellExecute: Eine Alternative zur Shell-Funktion ist die Verwendung von ShellExecute. Diese Methode kann in einigen Fällen effektiver sein:
Dim Ret_Val
Ret_Val = ShellExecute(0, "open", "C:\test.cmd", "", "", 1)
Cmd-Datei zur Kopie von Dateien:
copy "C:\MeinOrdner\*_UN.csv" "C:\MeinOrdner\xDB_UN.txt"
Dieser Befehl kopiert alle CSV-Dateien mit der Endung _UN in eine TXT-Datei.
Einfaches Makro zur Ausführung:
Sub cmdDateiBeispiel()
Shell "cmd /C C:\MeinOrdner\Kopieren.cmd"
End Sub
Verwende vollständige Pfade: Dies verringert die Wahrscheinlichkeit von Pfadproblemen.
Testen im Explorer: Teste die cmd-Datei zuerst im Explorer, um sicherzustellen, dass der Befehl funktioniert.
Debugging: Verwende Debug.Print in VBA, um Pfade und Befehle zu überprüfen, bevor Du das Makro ausführst.
1. Warum funktioniert der Shell-Befehl manchmal nicht?
Der Shell-Befehl benötigt möglicherweise vollständige Pfade zu den Dateien. Überprüfe die Pfadangaben in deinem Code.
2. Ist es notwendig, die Datei als .cmd oder .bat zu speichern?
Beide Dateitypen können verwendet werden, jedoch kann es hilfreich sein, .bat-Dateien auszuprobieren, wenn Probleme mit .cmd-Dateien auftreten.