Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Batch-datei ausführen, Ergebnis in Excel

Forumthread: Batch-datei ausführen, Ergebnis in Excel

Batch-datei ausführen, Ergebnis in Excel
18.06.2014 11:32:56
Michael
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.

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Batch-datei ausführen, Ergebnis in Excel
25.06.2014 00:53:45
Michael
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
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Batch-Datei ausführen und Ergebnisse in Excel darstellen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Füge den folgenden VBA-Code ein, um die Batch-Datei auszuführen und die Ergebnisse in Excel zu importieren:

    Sub ExecuteBatchFile()
       Dim objShell As Object
       Dim objExec As Object
       Dim strOutput As String
       Dim i As Long
    
       Set objShell = CreateObject("WScript.Shell")
       Set objExec = objShell.Exec("schtasks /query /S SERVER /V /FO csv")
    
       ' Ausgabe von STDOUT lesen
       Do While Not objExec.StdOut.AtEndOfStream
           strOutput = objExec.StdOut.ReadLine
           ' Ausgabe in Excel Zelle schreiben
           Cells(i + 1, 1).Value = strOutput
           i = i + 1
       Loop
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus:

    • Drücke ALT + F8, wähle ExecuteBatchFile und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Befehlszeile nicht gefunden"

    • Überprüfe, ob der eingegebene Befehl korrekt ist und ob die nötigen Berechtigungen vorhanden sind.
  • Fehler: Ergebnisse erscheinen nicht in Excel

    • Vergewissere dich, dass der Befehl in der Batch-Datei korrekt geschrieben ist und dass die Excel-Zellen nicht gesperrt sind.
  • Fehler: Makro läuft nicht

    • Stelle sicher, dass die Makros in den Excel-Einstellungen aktiviert sind. Gehe dazu zu Datei > Optionen > Trust Center > Einstellungen für den Trust Center und aktiviere Makros.

Alternative Methoden

  • CSV-Datei importieren: Wenn du bereits eine .csv-Datei hast, kannst du diese einfach in Excel importieren:

    1. Gehe zu Daten > Daten abrufen > Aus Text/CSV.
    2. Wähle die Datei aus und klicke auf Laden.
  • Power Query: Nutze Power Query, um Daten aus verschiedenen Quellen zu importieren und zu transformieren.


Praktische Beispiele

Wenn du eine Batch-Datei ausführen möchtest, die eine einfache Abfrage macht, kannst du die folgende Modifizierung des Skripts verwenden:

Sub RunSimpleBatch()
    Dim objShell As Object
    Set objShell = CreateObject("WScript.Shell")
    objShell.Run "deinBatchScript.bat"
End Sub

Ersetze deinBatchScript.bat durch den Pfad deiner .bat-Datei.


Tipps für Profis

  • Fehlerbehandlung: Verwende On Error Resume Next, um Fehler abzufangen, und implementiere eine Logging-Funktion für bessere Nachverfolgbarkeit.
  • Automatisierung: Du kannst das Makro auch in eine Schaltfläche in Excel einfügen, um den Prozess zu automatisieren.
  • Batch-Dateien optimieren: Achte darauf, dass deine Batch-Datei effizient geschrieben ist, um die Ausführungszeit zu minimieren.

FAQ: Häufige Fragen

1. Wie kann ich eine Batch-Datei aus Excel heraus direkt ausführen? Du kannst eine Batch-Datei mit dem Befehl Shell oder WScript.Shell.Exec in VBA aufrufen.

2. Kann ich die Ergebnisse von mehreren Batch-Befehlen in Excel darstellen? Ja, du kannst mehrere Exec-Befehle in deinem VBA-Skript verwenden und die Ergebnisse in verschiedene Zellen schreiben. Achte darauf, dass du die Zelle nach jeder Ausgabe korrekt anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige