Hallo zusammen,
ich möchte folgende Abfrage
schtasks /query /S SERVER /V /FO csv | find /i "TEXT" > test.csv
über VBA erstellen und das Ergebnis nicht in test.csv sondern in einem Excel Arbeitsblatt dargestellt haben.
Vorschläge? Danke.
Hallo Michael,
mein Namensvetter...
Ich habe wegen eines ähnlich gelagerten, eigenen Problems jetzt mal ne ganze Zeit recherchiert. Herber bietet Einiges zur Shell, was das Problem beleuchtet.
Soweit ich das jetzt verstehe, hapert es aber daran, daß shell nicht wartet, bis der aufgerufene Befehl abgearbeitet wurde.
Abhilfe bietet ein Aufruf der Windows-shell.
Bei http://www.office-loesung.de/viewprofileposts5340_bst.php
findet sich eine Lösung mit WScript.Shell, die wartet, bis die Abfrage fertig ist, aber mit Shell.RUN arbeitet.
Werte vom STDOUT (also der normalen Bildschirmausgabe, die Du im Beispiel mit Pipe in test.csv umleitest) kann man anscheinend nur mit Shell.EXEC abgreifen.
Ein Beispiel dazu findest Du bei http://www.office-loesung.de/ftopic355471_0_0_asc.php
Hier wird Exec.StdOut.ReadAll verwendet, das aus Gründen des errorhandlings schwierig sein mag, ich hab es mit einem eigenen DOS-Programm aber erfolgreich getestet.
Abgesehen davon: Wenn Du schon .CSV-Daten hast, wieso importierst Du die nicht einfach mit einem Makro? Funzt etwa so: .CSV öffnen, Blatt (oder Daten) dahin kopieren, wo Du es/sie brauchst, CSV schließen und fertig.
Schau Dir bitte noch das an: http://en.wikibooks.org/wiki/Excel_VBA#Command_Output
Hier sind einige Varianten beschrieben, wie Du STDOUT zeilenweise lesen kannst bzw. wie das Lesen von TEXT in Excel funktioniert. Trotzdem mußt Du dann jede gelesene Zeile in einzelne Werte zerlegen, mit CSV kannst Du Dir das schenken.
Happy Exceling,
Michael