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

Forumthread: Verzeichnis über Shell auslesen /Umlaute

Verzeichnis über Shell auslesen /Umlaute
13.11.2020 14:04:09
Stefan
Hallo Zusammen,
ich möchte gerne ein Verzeichnis über einen Shell-Befehl auslesen und in eine Datei schreiben. Das funktioniert soweit. Leider ist der UniCode dabei falsch und die Umlaute werden falsch ausgelesen.
Hier mein kleines Programm:

Sub CMD()
Dim x
Dim Datei As String
Dim Ausgabe As String
Dim Befehl As String
Datei = Range("Verzeichnis").Value & "*.xl*"
Ausgabe = Range("Verzeichnis").Value
Befehl = "cmd /c "
Befehl = Befehl & "@echo on " & " && "
Befehl = Befehl & "chcp 1250 " & " && "
Befehl = Befehl & "DIR """ & Datei & """ /a-d /b > """ & Ausgabe & """Verzeichnis.txt" & " &&  _
Befehl = Befehl & "@echo on " & " && "
Befehl = Befehl & "EXIT "
x = Shell(Befehl)
End Sub

Wenn ich die Zeilen in eine Batch schreibe, funktioniert es.
Ich bedanke mich schon einmal im Voraus.
Gruß aus Münster
Stefan
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnis über Shell auslesen /Umlaute
13.11.2020 14:27:28
keinplan
versuch
Befehl = Befehl & "chcp 1250 " & " | "
AW: Verzeichnis über Shell auslesen /Umlaute
13.11.2020 14:44:52
Stefan
Hallo keinplan,
genial. Was ich schon alles ausprobiert habe. Vielen, vielen Dank.
Gruß aus Münster und bleibt alle gesund
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Verzeichnis über Shell auslesen und Umlaute korrekt handhaben


Schritt-für-Schritt-Anleitung

Um ein Verzeichnis über einen Shell-Befehl auszulesen und Umlaute korrekt zu handhaben, kannst du folgende Schritte befolgen:

  1. Öffne Excel und erstelle ein neues VBA-Modul.

  2. Füge den folgenden Code in das Modul ein:

    Sub CMD()
       Dim x
       Dim Datei As String
       Dim Ausgabe As String
       Dim Befehl As String
       Datei = Range("Verzeichnis").Value & "*.xl*"
       Ausgabe = Range("Verzeichnis").Value
       Befehl = "cmd /c "
       Befehl = Befehl & "@echo on " & " && "
       Befehl = Befehl & "chcp 1250 " & " && "
       Befehl = Befehl & "DIR """ & Datei & """ /a-d /b > """ & Ausgabe & """Verzeichnis.txt" & " && "
       Befehl = Befehl & "@echo on " & " && "
       Befehl = Befehl & "EXIT "
       x = Shell(Befehl)
    End Sub
  3. Setze den Verzeichnis-Pfad in die entsprechende Zelle (z.B. A1).

  4. Führe das Makro aus, um die Dateien im angegebenen Verzeichnis aufzulisten.

Durch das Setzen von chcp 1250 stellst du sicher, dass die Umlaute korrekt verarbeitet werden.


Häufige Fehler und Lösungen

  • Fehler: Umlaute werden nicht korrekt angezeigt

    • Lösung: Stelle sicher, dass du chcp 1250 im Befehl verwendest, um die richtige Codepage zu setzen.
  • Fehler: Das Makro wird nicht ausgeführt

    • Lösung: Überprüfe, ob du die Makros in deinen Excel-Einstellungen aktiviert hast.

Alternative Methoden

Falls du Probleme mit der Shell-Methode hast, gibt es alternative Ansätze:

  • Batch-Datei verwenden: Du kannst deine Befehle in eine .bat-Datei schreiben und diese über Excel ausführen. Dies kann die Handhabung von Umlauten vereinfachen, da Batch-Dateien oft besser mit verschiedenen Codepages umgehen können.

  • PowerShell nutzen: Eine PowerShell-Skript könnte ebenfalls eine Lösung sein. Hier ein einfaches Beispiel:

    Get-ChildItem -Path "C:\DeinVerzeichnis" -Filter "*.xl*" | Out-File "C:\DeinVerzeichnis\Verzeichnis.txt" -Encoding utf8

Praktische Beispiele

Hier ist ein Beispiel für eine Batch-Datei, die du erstellen kannst, um das Verzeichnis auszulesen:

@echo off
chcp 1250
dir "C:\DeinVerzeichnis\*.xl*" /a-d /b > "C:\DeinVerzeichnis\Verzeichnis.txt"

Speichere diesen Code in einer .bat-Datei und führe ihn aus, um die Umlaute korrekt anzuzeigen.


Tipps für Profis

  • Achte darauf, die richtigen Berechtigungen zu haben, wenn du auf bestimmte Verzeichnisse zugreifst.
  • Nutze Kommentare in deinem VBA-Code, um die Funktionsweise zu erklären, besonders wenn du mit mehreren Befehlen arbeitest.
  • Teste deine Befehle zuerst in der Eingabeaufforderung, bevor du sie in dein Excel-Makro integrierst.

FAQ: Häufige Fragen

1. Wie kann ich die Codepage ändern?
Du kannst die Codepage mit dem Befehl chcp <Nummer> ändern. Zum Beispiel, chcp 1250 für Mitteleuropäische Sprachen.

2. Was mache ich, wenn die Umlaute weiterhin falsch dargestellt werden?
Überprüfe, ob die Eingabedatei und die Ausgabe-Datei im richtigen Format gespeichert sind. UTF-8 ist oft eine gute Wahl.

3. Kann ich das Makro anpassen, um auch andere Dateiformate auszulesen?
Ja, ändere einfach den Filter im Befehl DIR, um die gewünschten Dateiformate anzugeben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige