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

cmd-Datei über Makro ausführen

Forumthread: cmd-Datei über Makro ausführen

cmd-Datei über Makro ausführen
21.09.2004 12:37:29
Cengiz
Hallo,
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
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: cmd-Datei über Makro ausführen
21.09.2004 13:23:37
Uwe
Hallo Cengiz,
so sollte es klappen:
Shell "command.com /C C:\test.cmd"
Gruß Uwe
AW: cmd-Datei über Makro ausführen
21.09.2004 13:53:55
Cengiz
Hallo Uwe,
vielen Dank für die schnelle Antwort.
Hm, jetzt wird die Datei zwar gestartet, aber der DOS-Befehl, den ich in der cmd-Datei abgelegt habe, wird nicht ausgeführt.
Vielleicht hilft dir folgende Info weiter. In der cmd-Datei steht folgender Befehl:
copy "*_UN.csv" "xDB_UN.txt"
Ich möchte auf diese Weise alle csv-Dateien mit der Endung "_UN" in eine txt-Datei kopieren. Wenn ich im Explorer durch Doppelklick die cmd-Datei aufrufe, dann erhalte ich das gewünschte Ergebnis. Durch das Makro bekomme ich sattdessen leider nur eine leere txt.Datei.
Gruß, Cengiz
Anzeige
AW: cmd-Datei über Makro ausführen
tobias
Hallo
ich hatte mal so ein ähnliches Problem, hab es gelöst indem ich einfach die Kompletten Pfade beschrieben hab:
echo. reg.exe in system32 kopieren...
C:\WINNT\system32\xcopy.exe %Z%\os\win2000\SUPPORT\TOOLS\reg.exe C:\WINNT\system32
Vielleicht liegt es bei dir ja auch daran. Probiers mal aus
mfg tobias
Anzeige
AW: cmd-Datei über Makro ausführen
21.09.2004 14:32:06
Cengiz
Hallo Tobias,
tut mir leid, aber irgendwie hab ich nicht ganz verstanden, was du meinst. An welcher Stelle müßte ich denn die kompletten Pfade beschreiben bzw. wie müßte denn mein Shell-Befehl aussehen?
bisher: Shell "command.com /C C:\test.cmd"
Besten Dank im Voraus
Cengiz
AW: cmd-Datei über Makro ausführen
tobias
Hallo
Sorry, nein in deiner cmd meinte ich.
Das du genau beschreibst wo z.B. copy.exe liegt usw.
mfg tobias
Anzeige
AW: cmd-Datei über Makro ausführen
21.09.2004 14:38:33
Uwe
Hallo Cengiz,
Du kannst es ja nochmal so probieren:
Shell "cmd /C C:\test.cmd"
Aber ich glaube eher, dass das ein Pfadproblem ist.Gib im Copybefehl der Batch mal die kompletten Pfade mit an, z.B.:
copy " C:\Mytest\*_UN.csv " "C:\Mytest\xDB_UN.txt"
Gruß Uwe
AW: cmd-Datei über Makro ausführen
21.09.2004 14:56:10
Cengiz
Hallo Tobias,
ich habe nun beide Möglichkeiten ausprobiert:
1) Shell "cmd /C C:\test.cmd" im Makro
2) copy " C:\Mytest\*_UN.csv " "C:\Mytest\xDB_UN.txt" in der cmd-Datei
Aber es funktioniert leider wieder nicht, sorry.
Grüße, Cengiz
Anzeige
AW: cmd-Datei über Makro ausführen
21.09.2004 15:06:57
Uwe
Hallo Cengiz,
ich bin Uwe, nicht Tobias. :D
Kann es sein, dass die Datei(en) in Excel geöffnet sind?. Dann ist kein Zugriff über die
Shell möglich.
Gruß Uwe
AW: cmd-Datei über Makro ausführen
21.09.2004 15:12:17
Cengiz
Hallo Uwe,
so, diesmal liege ich hoffentlich richtig mit der Anrede *lacht*.
Also, ich habe zwar Excel geöffnet, aber nicht die relevanten Dateien. Wenn ich es direkt durch Doppelklick probiere, dann funktioniert es einwandfrei.
Gruß, Cengiz
Anzeige
AW: cmd-Datei über Makro ausführen
21.09.2004 15:35:42
Uwe
Hallo Cengiz,
da fällt mir jetzt auch nichts mehr ein. :-(
Gruß Uwe
AW: cmd-Datei über Makro ausführen
21.09.2004 15:39:22
Cengiz
Macht nichts, Uwe. Es sind sowieso nur wenige cmd-Dateien. Die kann ich dann auch notfalls manuell ausführen. Trotzdem vielen Dank.
Grüße, Cengiz
AW: cmd-Datei über Makro ausführen
tobias
Hallo
eine Idee: ändere den Dateityp mal von .cmd auf .bat
vielleicht...
mfg tobias
Anzeige
AW: cmd-Datei über Makro ausführen
21.09.2004 16:18:19
Cengiz
Hi,
mit bat komm ich auf das selbe (unbefriedigende) Ergebnis. Da funktioniert es dann auch nur direkt im Explorer durch Doppelklick.
Grüße, Cengiz
AW: cmd-Datei über Makro ausführen
ypsilon
hi Cengiz,
warum muss es denn unbedingt eine ausführbare datei sein ?
mach es doch gleich aus excel:
Shell "cmd /C copy C:\mytest\*_UN.csv C:\mytest\xDB_UN.txt"
cu Micha
Anzeige
AW: cmd-Datei über Makro ausführen
21.09.2004 17:02:16
Cengiz
Servus,
tut mir leid, aber ich muß euch wieder einmal mit einer Negativmeldung konfrontieren. Auch aus Excel heraus funktioniert es nicht :(
Was ist eigentlich mit dem Befehl ShellExecute? Wäre das vielleicht eine Möglichkeit?
Gruß, Cengiz
AW: cmd-Datei über Makro ausführen
yps
sorry,
aber das glaube ich dir nicht
du baust dir bestimmt fehler in der syntax oder in der pfadangabe ein
das muss funktionieren
cu Micha
Anzeige
AW: cmd-Datei über Makro ausführen
tobias
Hallo
Tja, dann bin ich jetzt auch Planlos
mfg tobias
AW: cmd-Datei über Makro ausführen
Reinhard
Hi Cengiz,

Sub tt()
Shell ("c:\test\test.bat")
End Sub

wobei in test.bat steht:
copy c:\test\*.txt c:\test\*.csv
Klappt mit Win98 und xl2000
Gruß
Reinhard
AW: cmd-Datei über Makro ausführen
21.09.2004 17:38:45
Cengiz
Hallo Reinhard,
vielen Dank. Es funktioniert :) Aber ich frage mich, warum diesmal und vorher nicht. Ich hatte vorher doch auch nichts anderes eingegeben. Es kann doch nicht nur an den Klammern liegen, oder? Die hatte ich vorher nämlich nicht gesetzt.
Vielleicht liegt es daran, daß ich jetzt sowohl in der cmd-Datei als auch im Shell-Befehl jeweils den vollständigen Pfad angegeben habe.
Naja, tut mir Leid, daß ich euch mit dem Problem geplagt habe :)
Vielen Dank für eure Mühen und viele Grüße
Cengiz
Anzeige
;
Anzeige

Infobox / Tutorial

cmd-Datei über ein Makro ausführen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu den Entwicklertools. Falls die Entwicklertools nicht sichtbar sind, kannst Du sie über die Excel-Optionen aktivieren.

  2. Erstelle ein neues Modul:

    • Klicke auf "Visual Basic" und füge ein neues Modul hinzu.
  3. 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
  4. Passe den Pfad an: Stelle sicher, dass der Pfad zur cmd-Datei korrekt ist. Zum Beispiel:

    Shell "cmd /C C:\MeinOrdner\deineDatei.cmd"
  5. Führe das Makro aus: Drücke F5 oder klicke auf "Run", um das Makro auszuführen.


Häufige Fehler und Lösungen

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


Alternative Methoden

  • 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)

Praktische Beispiele

  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.

  2. Einfaches Makro zur Ausführung:

    Sub cmdDateiBeispiel()
       Shell "cmd /C C:\MeinOrdner\Kopieren.cmd"
    End Sub

Tipps für Profis

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


FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige