Mir ist jetzt aber überhaupt nicht klar, wie Du auf das Soll-Ergebnis kommst. Ich erkenne kein System dahinter.
Kann aber sein, dass Andere es besser verstehen. Falls Du nach einiger Zeit keine weiteren Fragen oder Antworten erhältst, solltest Du anhand Deines Beispiels erklären warum was wo stehen soll oder muss.
sollen wie Zwergel beschrieben hat die die 2te ebene darstellen. Siehe Dateipfad "Buhara/Workspace" Im Grunde möchte ich den Dateipfad aufspalten auf verschiedene Zeilen doch chronologisch, so ähnlich wie eine Sitemap.
ich habe hier mal einen Code von irgendwo, der eine Ordnerstruktur nebst Dateien einliest und eine gruppierte Ausgabe ergibt. Ich denke, die Anforderung für die Anzeige geht in diese Richtung, nur dass die Daten schon vorhanden sind. Die Ausgabe der Dateien kann man einschränken, wnen man den entsprechenden codeteil auskommentiert - oder man programmiert es parametrisiert.
Modul Modul3
OptionExplicitConst ShowLevels AsInteger = 1PublicSub showAll()
'Blatt leeren
Cells.ClearContents
'Flackern aus
Application.ScreenUpdating = False'A1 aktivieren
Range("A1").Activate
'Struktur und Dateinamen einlesen
showDirs "F:\Test\", ShowLevels
'Flackern ein
Application.ScreenUpdating = True'Anzeige Grupierung steuern
ActiveSheet.Outline.ShowLevels RowLevels:=2 ' show 1st level subfolders and files EndSubPrivateSub showDirs(pm_Path AsString, pm_Level AsInteger)
'Variablendekalrationen Dim sDirEntry, arrDirEntries(), maxd
'Zaehler setzen
maxd = -1
'naechste Zelle aktivieren
ActiveCell.Offset(1, 1).Activate
'Zelle merken Dim savecell: Set savecell = ActiveCell
'Bei Fehler mit naechster Anweisung weiter OnErrorResumeNext'Pfad / Verzeichnis aufnehmen
sDirEntry = Dir(pm_Path, vbDirectory Or vbNormal Or vbHidden)
'Bei Fehler zur Fehlerbehandlung gehen If Err.Number <> 0ThenGoTo errorHandler
'Solange ein Verzeichniseintrag vorhanden ist While sDirEntry <> ""'Verzeichnisebenen zaehlen If sDirEntry <> "."And sDirEntry <> ".."Then
maxd = maxd + 1'Verzeichnisarray erweitern RedimPreserve arrDirEntries(maxd)
'Verzeichnis uebernehmen
arrDirEntries(maxd) = sDirEntry
'Ende Verzeichnisebenen zaehlen EndIf'naechster Verzeichniseintrag
sDirEntry = Dir()
'Bei Fehler zur Fehlerbehandlung gehen If Err.Number <> 0ThenGoTo errorHandler
'Ende Solange ein Verzeichniseintrag vorhanden ist Wend'wenn der Verzeichniszaehler -1 ist, dann If maxd = -1 Then' gibts nix oder Else'Variablendeklaration Dim at
'Schleife ueber alle Verzeichnisse For maxd = 0ToUbound(arrDirEntries)
'Attribut des Eintrags auslesen, ausser in archive (32) und hoeher, encrypted/compressed
at = GetAttr(pm_Path & arrDirEntries(maxd)) And31'Verzeichniseintraege je nach Attribut formatieren If (at And vbHidden) = vbHidden Then ActiveCell.Font.Italic = True'If (at And vbAlias) = vbAlias Then ActiveCell.Font.Color = vbGreen 'If (at And vbReadOnly) = vbReadOnly Then ' ... 'Wenn es ein Verzeichnis ist, dann If (at And vbDirectory) = vbDirectory Then'Verzeichniseintrag in Zelle schreiben
ActiveCell.Value = arrDirEntries(maxd)
'fett formatieren
ActiveCell.Font.Bold = True'Ebene versetzen / ruecksetzen If pm_Level > 0Then
showDirs pm_Path & arrDirEntries(maxd) & "\", pm_Level - 1
ActiveCell.Offset(0, -1).Activate
Else
ActiveCell.Offset(1, 0).Activate
'Ende Ebene versetzen / ruecksetzen EndIf'Ende Wenn es ein Verzeichnis ist, dann EndIf'Ende Schleife ueber alle Verzeichnisse Next'Schleife ueber alle Verzeichnisse For maxd = 0ToUbound(arrDirEntries)
'Attribut des Eintrags auslesen, ausser in archive (32) und hoeher, encrypted/compressed
at = GetAttr(pm_Path & arrDirEntries(maxd)) And31'Zelle Formatieren If (at And vbHidden) = vbHidden Then ActiveCell.Font.Italic = True'Dateieintrag ggf. in Zelle schreiben und naechste Zelle aktivieren If (at And vbDirectory) = 0Then
ActiveCell.Value = arrDirEntries(maxd)
ActiveCell.Offset(1, 0).Activate
'Ende Dateieintrag ggf. in Zelle schreiben und naechste Zelle aktivieren EndIf'Ende Schleife ueber alle Verzeichnisse Next'Gruppieren
Range(savecell, ActiveCell.Offset(-1, 0)).Rows.Group
'Ende wenn der Verzeichniszaehler -1 ist, dann EndIfGoTo done
errorHandler:
ActiveCell.Offset(-1, -1).Font.Color = vbRed
done:
Set savecell = NothingEndSub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)