Umleiten der Ausgabe eines Shell-Kommandos ausgeführt werden, die in VBA zu einer Bestimmten Shell
Ich bin noch sehr sehr neu in VBA und angefangen zu lernen, dass es vor ein paar Tagen. Jetzt versuche ich ein Makro zu erstellen, führen Sie ein shell-Befehl und leiten Sie die Ausgabe an eine bestimmte Zelle in einem bestimmten Arbeitsblatt. Was ich versuche zu erreichen, ist man ein text-dump der directory-Struktur in ein Arbeitsblatt. Unten ist der code, den ich bisher haben.
Sub CopyList()
Call Shell("cmd.exe /S /K" & "dir /s /b directoryPath", vbNormalFocus)
End Sub
Ausführen dieses makro öffnet eine Eingabeaufforderung ein und speichert die Verzeichnis-Struktur in das cmd-Fenster. Ich Frage mich, wie konnte ich dieses Rohr zu einem Arbeitsblatt. Ihre Hilfe würde sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen, die Sie WScript.Shell-Objekt und Lesen Sie die StdOut direkt:
Variant
und verwenden Sie dieSplit()
Funktion mitvbCrLf
als Trennzeichen zu erstellen, die ein array mit allen Ergebnissen, dann können Sie transponieren, dass array in die Zellen erforderlich.Range("A1").Value = CreateObject("WScript.Shell").Exec("CMD /S /C dir /s /b directoryPath").StdOut.ReadAll
Ein Ansatz wäre die änderung der
Call Shell
zu:Dies würde erstellen Sie eine text-Datei im Ordner "C:\MyData" (ersetzen Sie durch die Ordner Ihrer Wahl) enthalten, was gegangen wäre die Konsole. Sie können dann öffnen Sie die text-Datei und extrahieren Sie deren Inhalt.
VBA-Lösung Hinzugefügt in Antwort zu Kommentar
Wenn Sie möchten, eine VBA-Lösung, haben Sie zwei Möglichkeiten: Funktion
Dir$
undFile Scripting Objects
.Funktion
Dir$
ist die frühere Funktionalität. Es bietet Dateiangaben mit wildcards, aber ansonsten bietet weniger Funktionalität alsFile Scripting Objects
. Ich habe beschlossen, einFile Scripting Objects
Lösung, weil ich fast immer finde es mehr nützlich.Glaube ich, dass die Kommentare im code ausreichend erklären, was ich Tue, aber nicht erklären, die VBA-Anweisungen, die ich verwende. Sobald Sie wissen, eine Anweisung vorhanden ist, ist es leicht zu schauen Sie. Fragen Sie, falls notwendig, aber desto mehr können Sie für sich entdecken, desto schneller entwickeln Sie Ihre Kenntnisse und Fähigkeiten.