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

Ordnerstruktur aus Explorer auslesen

Forumthread: Ordnerstruktur aus Explorer auslesen

Ordnerstruktur aus Explorer auslesen
10.04.2024 09:36:26
Alex Weis
Hallo Alle,

mein Ziel:

Ich hätte gerne dass beim Öffnen einer Mappe die Unterordnernamen des Ordners "Daten" in Excel in einer Spalte eingelesen werden. Dabei will ich nur die 1.Ebene angezeigt haben. Unterordner von Unterordnern sollen nicht angezeigt werden.

Ich habe bereits ein Makro das so was ähnliches mit einer Abfrage macht, allerdings gibt dieser Code alles aus, inkl. allen Unterordnern. Das dauert aber viel zu lange und ist unnötig.



Public Sub OrdnerListen_Start()
Dim fso As Object

Dim strPfad As String

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Start-Verzeichnis wählen"
.ButtonName = "übernehmen"
If .Show > -1 Then Exit Sub
strPfad = .SelectedItems(1)
End With

With ActiveSheet

.UsedRange.ClearContents

Set fso = CreateObject("Scripting.FileSystemObject")

Call OrdnerListen(fso, strPfad, .Range("A2")) ' Pfad anpassen!

Set fso = Nothing

End With

End Sub

Private Sub OrdnerListen(fso As Object, Ordnerangabe As String, rng As Range, Optional Zeile As Long, Optional Spalte As Long)
Dim o, uo

Set o = fso.GetFolder(Ordnerangabe)

rng.Offset(Zeile, Spalte).Value = o.Name

Zeile = Zeile + 1

For Each uo In o.SubFolders
Spalte = Spalte + 1
Call OrdnerListen(fso, uo.Path, rng, Zeile, Spalte)
Spalte = Spalte - 1
Next

Set o = Nothing
Set uo = Nothing

End Sub


Hätte hier jemand eine Lösung oder kann den obigen Code so anpassen dass nur die 1.Ebene ausgelesen und angezeigt wird.

Vielen Dank und Gruß

Alex
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordnerstruktur aus Explorer auslesen
10.04.2024 10:28:55
Yal
Hallo Alex,

ein paar Punkte haben bei mir nicht funktioniert (obwohl sie hätten sollen), u.a. "if .show > -1 then". Ich habe diese umgestellt.

Wenn Du intensiv mit den Elemente einer Bibliothek arbeitest, bittet sich an, diese anzubinden: in VB-Editor, Extras, Verweise.., Haken bei der BIbliothek. In dem Fall "Microsoft Scripting Runtime". Ein Kommentar ist aber dann auch fällig. Dann kannst Du die Variablen richtig deklarieren: Folder, File, usw... Intellisense und Objektkatalog sind dann auch verfügbar.

Der Weg über einen separaten Array ist nicht notwendig. Macht aber den Code schneller.
Public Sub OrdnerListen_Start()

Dim strPfad As String
Dim erg

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Start-Verzeichnis wählen"
.ButtonName = "übernehmen"
.Show
If .SelectedItems.Count = 0 Then Exit Sub
strPfad = .SelectedItems(1)
End With

With ActiveSheet
.UsedRange.ClearContents
OrdnerListen strPfad, .Range("A2") ' Pfad anpassen!
End With

End Sub

Private Sub OrdnerListen(Pfad As String, rng As Range)
'Unter Anbindung (Extras, Verweise...) der Bibliothek
'Microsoft Scripting Runtime
Dim fso As New FileSystemObject
Dim Ordner As Folder
Dim UntOrd As Folder
Dim i As Long
Dim Arr()

Set Ordner = fso.GetFolder(Pfad)
ReDim Arr(1 To Ordner.SubFolders.Count, 1 To 2)
For Each UntOrd In Ordner.SubFolders
i = i + 1
Arr(i, 1) = Ordner.Name
Arr(i, 2) = UntOrd.Name
Next
rng.Resize(i, 2) = Arr
End Sub


VG
Yal
Anzeige
AW: Ordnerstruktur aus Explorer auslesen
10.04.2024 10:30:07
Oberschlumpf
Hi Alex,

wenn es funktioniert, wäre der folgende Code viel einfacher (ungetestet, dafür aber "locker aus der Hüfte" :-) )



Sub test()

Dim strPfad As String, lloRow As Long

lloRow = 1
strPfad = Dir("hier dein Suchpfad", vbDirectory)

Do Until strPfad = ""
Range("A" & lloRow).Value = strPfad
strPfad = Dir
Loop

End Sub

...das war's schon

Hilfts?

Ciao
Thorsten
Anzeige
AW: Ordnerstruktur aus Explorer auslesen
10.04.2024 10:51:44
Yal
Hallo Thorsten,

ich habe sofort gesehen, weil ich selber den Fehler hatte: lloRow muss incrementiert werden, sonst wird alles in dieselbe Zelle geschrieben ;-)



Sub test()
Dim strPfad As String, lloRow As Long

strPfad = Dir("hier dein Suchpfad", vbDirectory)
Do Until strPfad = ""
lloRow = lloRow + 1
Range("A" & lloRow).Value = strPfad
strPfad = Dir
Loop
End Sub


VG
Yal
Anzeige
AW: Ordnerstruktur aus Explorer auslesen
10.04.2024 11:23:56
Oberschlumpf
Hi Yal,

DAS war wohl - zu doll - aus meiner Hüfte!^^ :-)
Danke für die Verbesserung!

Ciao
Thorsten
AW: Ordnerstruktur aus Explorer auslesen
10.04.2024 11:56:24
Alex Weis
Hallo Yal,

das war die Lösung. vielen Dank an alle die mir hier geholfen haben.

Ihr seid Spitze!!

Viele Grüße Alex
AW: Ordnerstruktur aus Explorer auslesen
10.04.2024 10:47:12
daniel
Hi

ergänze in der Sub Ordnerlisten die Zeile Call OrdnerListen(...) so:

if Spalte 2 Then Call OrdnerListen(...)

über diese Abfrage kannst du steuern, wie viele Ebenen der Ordnerstruktur ermittelt werden.

Gruß Daniel
Anzeige
AW: Ordnerstruktur aus Explorer auslesen | Frage
10.04.2024 11:02:26
Wolf aus Franken
Hallo,
ich habe das Ganze gesehen und wollte das auch "umsetzen"; leider klappt das nicht so.
Kann auch sein, dass ich nicht! das neueste Excel habe ( muss man auch nicht oder ?)
Einfach nur kopieren und einfügen klappt nicht so ...
Mich würde das schon interessiern, wie man so was macht.
Der Wolf aus Franken
Anzeige
AW: Ordnerstruktur aus Explorer auslesen | Frage
10.04.2024 14:00:39
Yal
Hallo Wolf,

wir bräuchten mehr Beschreibung, über was Du gemacht hast, um gezielt zu helfen. Aber eigentlich ist die Lösung bereits vollständig.
Die Excel-Version spielt keine Rolle.
Achte darauf, dass eventuell eine Bibliothek angebunden werden muss (im Beitrag erklärt).

VG
Yal
Anzeige
;

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