Ausführen einer batch-Datei in einem angegebenen Verzeichnis verwenden von VBA
Wenn ich meine batch-Datei den Speicherort und öffnen Sie die batch-Datei funktioniert. Meine batch-Datei ist einfach:
cd .\data
dir/b/o:n > names.txt
Wie Sie sehen können, bin ich in meiner aktuellen Verzeichnis nach unten bewegen, um das sub-Verzeichnis "Daten" und der Umgang alle Namen und erstellen Sie eine Datei namens names.txt
.
Wenn ich sage,
shell "location of file"
er öffnet die batch-Datei, sondern das Verzeichnis, das ausgefallen ist C:\my documents
, so werden meine Befehle nicht funktionieren, weil es nicht finden können, die sub-Verzeichnis. Ich will, dass das eine dynamische batch-Datei, und deshalb brauche ich etwas zu schreiben in VBA, die wird öffnen Sie die batch-Datei unter dem aktuellen Verzeichnis oder etwas zu diesen Effekt.
Wie mache ich das?
- Aus Gründen der besseren Lesbarkeit, bitte setzen Sie etwas Mühe in die richtig Formatierung und Rechtschreibung Ihre Fragen. Ich befestigt es für Sie in dieser Zeit. Beachten Sie, dass code
formatted as code
mit der{}
- Taste. - Sorry, neue Seite.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden sollten Sie die Wirkung, die Sie suchen.
Mein test-code ist:
Mein test batch-Datei benannt ist TryShell.Fledermaus und enthält:
Ich legte meine batch-Datei in demselben Ordner wie die Arbeitsmappe mit meinem makro.
Die Aussage
PathCrnt = ActiveWorkbook.Path
setzt PathCrnt auf den Namen des Verzeichnisses, in der aktiven Arbeitsmappe. Sie können PathCrnt zu, was Verzeichnis, das Sie benötigen.Wenn ich rufe
Shell
, ich habePathCrnt
als parameter.In meiner batch-Datei, habe ich das aktuelle Verzeichnis
%1
ist der erste parameter.Den
dir
- Befehl funktioniert, wie ich möchte, weil das aktuelle Verzeichnis mein-Verzeichnis und nicht den Standard-system-Verzeichnis.Hoffe, das ist klar.
ActiveWorkbook.Path
als meine test-Ordner, denn das war bequemer für mich, aber man könnte es ändern, um etwas anderes. Wenn das makro nicht wissen, den Speicherort der batch-Datei, wie kann es einen DOS-Befehl, der wird es finden.C:\My Dokumente ist vermutlich das Verzeichnis, in dem Ihre Tabellenblatt befindet. Wenn Sie hinzufügen
vor dem Start der Shell-Befehl und das sollte funktionieren...
Alternativ könnte man ändern Sie Ihre batch-Datei zu einem absoluten Verzeichnis, anstatt eine relative.