Bitte
18.12.2023 22:44:23
Nicole Gruffy
ich bräuchte einmal eure Unterstützung.
Ich habe eine Excel-Tabelle ("Tabelle1"), die in den Spalten A-D im Bereich A1-D175 mehrere Einträge in verschiedenen Zellen enthält. Aus den Zelleinträgen sollen jeweils Ordner erstellt werden, die dann entsprechend strukturiert eingefügt werden sollen. Die Ordner sollen so wie der Zellinhalt heißen
Ich habe eine Exceltabelle beigefügt (hier https://www.herber.de/bbs/user/165273.xlsm) kurz zur Erklärung: Es handelt sich um einen Ausschnitt. In Zelle A1 steht der erste Hauptordner "Familie B." In Spalte B stehen dann jeweils verschiedene Familienmitglieder, diese gehören eigentlich in den Hauptordner Familie B aus Zelle A1. In Spalte C stehen jeweils Einträge die eigentlich den Spalte B gehören und in Spalte D stehen Einträge die in den Ordner von C gehören.
Dabei ist aber zu beachten, dass die Ordner jeweils in den nächst höheren Ordner aus der vorgenannten Spalte gehört. ein Beispiel hierzu: Die einzelnen Familienmitglieder stehen in den Zellen B2, B7 und B14. Die gehören alle in den Ordner aus A1 ("Familie B"), weil der nächste Wert aus Spalte A erst in Zelle A16 wieder kommt. Der unterschiedliche Abstand der Familienmitglieder B Familienmitglieder aus Spalte B ergibt sich daraus, dass jeweils noch Zellen in C beschrieben sind. Vorliegend die Zellen C3 : C6, die in den oberen Ordner aus Spalte B gehört, in diesem Fall den Ordner aus Zelle B2 ("Nicole"). Ich hoffe, ich habe mein Problem ausreichend erklärt: Ich nutze den folgenden VBA Code. Dieser erzeugt mir auch die Ordner aber alle auf der selben Ebene, das ist fatal. Ich bräuchte Unterstützung dabei den VBA COde anzupassen, oder vielleicht auch ein neuen Code, der die Ordner strukturiert anlegt.
Der Code:
Option Explicit
Sub CreateFolders()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim path As String
Dim folderPath As String
Set ws = ThisWorkbook.Sheets("Tabelle1")
Set rng = ws.Range("A1:D175")
For Each cell In rng
If cell.Column = 1 Then
path = "C:\Users\User\Desktop\Download\301\" & cell.Value
If Dir(path, vbDirectory) = "" Then MkDir path
ElseIf cell.Column = 2 Then
folderPath = path & "\" & cell.Value
If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath
ElseIf cell.Column = 3 Then
folderPath = folderPath & "\" & cell.Value
If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath
ElseIf cell.Column = 4 Then
folderPath = folderPath & "\" & cell.Value
If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath
End If
Next cell
End Sub
Ich habe im Internet verschiedene alternativen gesucht aber, leider nichts für mich verwendbares gefunden. Einmal eine Möglichkeit per CND, da traue ich mich aber nicht ran, da sind meine Kenntnisse nicht ausreichend genug, dasselbe gilt für eine Möglichkeit per "Python". Dann habe ich noch eine Möglichkeit per BAT Datei gefunden, aber ich habe dasselbe Problem. Das die Ordnerstruktur nicht angelegt werden.
Vielen Dank für eure Unterstütung
Viele Grüße
Nicole