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

Ordner auslesen mit Dir()

Forumthread: Ordner auslesen mit Dir()

Ordner auslesen mit Dir()
28.10.2003 12:53:47
Dirk
Hallo zusammen,

ich versuche, aus einem Ordner (C:\Eigene Dateien) die Unterverzeichnisse auszulesen. Die Dateien aus einem Ordner (C:\Eigene Dateien) kann ich prima mit a = Dir(“C:\Eigene Dateien\” & „*.*“) auslesen. Aber wie kriege ich das mit Unterverzeichnissen hin? Mein jämmerlicher Versuch bisher:
a = Dir(“C:\Eigene Dateien\”, vbDirectory)
Aber so wird alles ausgelesen (obwohl ich extra „vbDirectory“ gesagt habe :(().

Diese Gelegenheit will ich auch noch nutzen um zu fragen, was in diesem Zusammenhang „.“ und „..“ (jeweils als Ergebnis von Dir()) heißt. Daraus werde ich auch nicht schlau.

Ich bin sehr dankbar für eine Antwort.
Dirk
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner auslesen mit Dir()
28.10.2003 13:06:40
Nayus
Hallo,
mit DIR geht das nicht.

'Lösungsansatz (Angepasste Kopie aus der Online-Hilfe):


Sub ShowFolderList()
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("c:\temp\")
Set fc = f.SubFolders
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
MsgBox s
End Sub


Viel Erfolg,
Nayus
Anzeige
AW: Ordner auslesen mit Dir() - noch offen -
28.10.2003 13:47:43
Guido Palacios
Hi,

wenn Dir mit dem Attributsparameter 16 verwendet wird liefert es unter anderem auch die Verzeichnisnamen "." und ".."! Dies Verzeichnisnamen sind für die interne Verwaltung der Verzeichnisstruktur von Bedeutung.

Wie ich diese verwende bzw. berücksichtige ist mir selber auch noch unklar!

Grüße
Guido P.
Anzeige
AW: Ordner auslesen mit Dir()
28.10.2003 14:29:43
Reinhard
Hi Dirk,
als Bill Gates damals einem armen Studenten ein Programm für 1500$ abkaufte, damit zu IBM ging und die Mutter aller Verträge abschloss, gabs (glaub) schon bei Verzeichnissen diese "." und "..".
Mit "." ist das Verzeichnis wo man sich gerade befindet und mit ".." das übergeordnete Verzeichnis gemeint. Siehe dazu das nachfolgende Makro.
In Dos kann/konnte man also mit CD.. ein Verzeichnis höhergehen.
Für was man "." benutzen kann ist mir unklar. Ich glaub es gab mal die Möglichkeit in Dos -Batches zu prüfen mittels "if exists", was normal nur für dateien gilt, in dem man mit "If exists==VerzName\." das Vorhandensein von "." abprüfte, zu prüfen ob das Verzeichnis VerzName existiert.

Jedenfalls ist es egal was man nimmt, ob:
a = Dir("C:\Eigene Dateien\" & "*.*")
a = Dir("C:\Eigene Dateien\.")
a = Dir("C:\Eigene Dateien\")

(Ps:was hast du denn für Gänsefüßchen? Word?)

Man kann mit Dir schon nur Verzeichnisse auflisten lasse, sofern sie keinen Dateiendung haben, also das Verzeichnis "Alle Bilder" findet man, das Verzeichnis "Alle Bilder.001"
nicht, siehe letzte While-Schleife.
Gruß
Reinhard


Sub z()
a = Dir("D:\Eigene Dateien\.", vbDirectory)
n = 1
While a <> ""
Cells(n, 1) = a
n = n + 1
a = Dir()
Wend
a = Dir("D:\Eigene Dateien\", vbDirectory)
n = 1
While a <> ""
Cells(n, 3) = a
n = n + 1
a = Dir()
Wend
a = Dir("D:\Eigene Dateien\..", vbDirectory)
n = 1
While a <> ""
Cells(n, 5) = a
n = n + 1
a = Dir()
Wend
a = Dir("D:\Eigene Dateien\*.", vbDirectory)
n = 1
While a <> ""
Cells(n, 7) = a
n = n + 1
a = Dir()
Wend
End 

Sub

Anzeige
siehe auch bei XL: ChDir ".." o.w.T.
28.10.2003 14:32:25
Reinhard
Gruß
Reinhard
Danke an alle, ihr seid sehr hilfreich! (nT)
28.10.2003 21:11:33
Dirk
a
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Ordner auslesen mit Dir() in Excel VBA


Schritt-für-Schritt-Anleitung

Um mit VBA in Excel ein Verzeichnis auszulesen, kannst Du die Dir-Funktion verwenden. Allerdings kann es herausfordernd sein, Unterverzeichnisse mit dieser Methode auszulesen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

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

  2. Füge ein neues Modul hinzu: Gehe zu Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub OrdnerAuslesen()
       Dim a As String
       Dim n As Integer
       n = 1
       a = Dir("C:\Eigene Dateien\.", vbDirectory)
    
       While a <> ""
           Cells(n, 1).Value = a
           n = n + 1
           a = Dir()
       Wend
    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 OrdnerAuslesen und klicke auf Ausführen.

Dieser Code liest alle Dateien und Unterverzeichnisse im angegebenen Verzeichnis aus.


Häufige Fehler und Lösungen

  • Problem: Dir gibt nicht nur die gewünschten Dateien zurück.

    • Lösung: Achte darauf, dass Du den vbDirectory-Parameter korrekt verwendest, um nur Verzeichnisse zu filtern. Wenn Du auch . und .. siehst, kannst Du diese in Deinem Code ignorieren.
  • Problem: Das Makro läuft nicht oder gibt einen Fehler aus.

    • Lösung: Überprüfe den Pfad, den Du in der Dir-Funktion angibst. Vergewissere Dich, dass der Ordner existiert und dass Du die richtigen Berechtigungen hast.

Alternative Methoden

Falls Du mit Dir nicht die gewünschten Ergebnisse erzielst, kannst Du die FileSystemObject-Bibliothek verwenden. Hier ein Beispiel:

Sub ShowFolderList()
    Dim fs As Object
    Dim f As Object
    Dim f1 As Object
    Dim fc As Object
    Dim s As String

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder("C:\Eigene Dateien")
    Set fc = f.SubFolders

    For Each f1 In fc
        s = s & f1.Name & vbCrLf
    Next
    MsgBox s
End Sub

Diese Methode bietet eine einfachere Möglichkeit, Unterverzeichnisse auszulesen.


Praktische Beispiele

Hier sind einige Beispiele, die Dir bei der Anwendung von VBA helfen:

  1. Ordnerstruktur auslesen:

    Sub Ordnerstruktur()
       Dim a As String
       Dim n As Integer
       n = 1
       a = Dir("C:\Eigene Dateien\", vbDirectory)
    
       While a <> ""
           If a <> "." And a <> ".." Then
               Cells(n, 1).Value = a
               n = n + 1
           End If
           a = Dir()
       Wend
    End Sub
  2. Unterverzeichnisse auflisten:

    Verwende die FileSystemObject-Methode, um alle Unterverzeichnisse in einem bestimmten Ordner zu listen, wie zuvor beschrieben.


Tipps für Profis

  • Nutze die FileSystemObject, um mehr Kontrolle über das Verzeichnismanagement zu haben. Diese Technik ist flexibler und einfacher zu handhaben, vor allem bei großen Ordnerstrukturen.
  • Erstelle eine Fehlerbehandlung, um mit unvorhergesehenen Situationen umzugehen, wie z.B. fehlenden Berechtigungen.
  • Kombiniere die Dir-Methode mit Schleifen, um rekursiv durch Unterverzeichnisse zu navigieren.

FAQ: Häufige Fragen

1. Was bedeuten die Verzeichnisnamen "." und ".."?
. steht für das aktuelle Verzeichnis, während .. das übergeordnete Verzeichnis darstellt. Diese Begriffe sind in der Dateisystemverwaltung wichtig.

2. Wie kann ich nur Ordner und keine Dateien auslesen?
Verwende den vbDirectory-Parameter in der Dir-Funktion, um nur die Verzeichnisse zu filtern. Achte darauf, die Namen . und .. zu ignorieren.

3. Funktioniert dies in allen Excel-Versionen?
Ja, diese VBA-Methoden sollten in den meisten Excel-Versionen funktionieren, die VBA unterstützen.

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