Anzeige
Archiv - Navigation
1956to1960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bitte

Bitte
18.12.2023 22:44:23
Nicole Gruffy
Liebe Community,
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

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Tabellenaufbau
19.12.2023 06:07:05
RPP63
Moin!
Zunächst mal musst Du alle Leerzeilen entfernen und die Leerzellen mit dem Wert von oben auffüllen:
 ABCDE
101 - Familie B01.01 Nicole01.01.01 Firma 01 - Familie B\01.01 Nicole\01.01.01 Firma\
201 - Familie B01.01 Nicole01.01.02 Bank 01 - Familie B\01.01 Nicole\01.01.02 Bank\
301 - Familie B01.01 Nicole01.01.03 FA 01 - Familie B\01.01 Nicole\01.01.03 FA\
401 - Familie B01.01 Nicole01.01.04 Sonstiges 01 - Familie B\01.01 Nicole\01.01.04 Sonstiges\
501 - Familie B01.02 Oliver01.02.01 Firma01.02.01.00 Hauptjob01 - Familie B\01.02 Oliver\01.02.01 Firma \01.02.01.00 Hauptjob\
601 - Familie B01.02 Oliver01.02.01 Firma01.02.01.00 Nebenjob01 - Familie B\01.02 Oliver\01.02.01 Firma \01.02.01.00 Nebenjob\
701 - Familie B01.02 Oliver01.02.02 Bank 01 - Familie B\01.02 Oliver\01.02.02 Bank\
801 - Familie B01.02 Oliver01.02.03 FA 01 - Familie B\01.02 Oliver\01.02.03 FA\
901 - Familie B01.02 Oliver01.02.04 Sonstiges 01 - Familie B\01.02 Oliver\01.02.04 Sonstiges\
1001 - Familie B01.03. Jakob - Etienne01.03. 01 Studium 01 - Familie B\01.03. Jakob - Etienne \01.03. 01 Studium\
1102. Haus   02. Haus \

ZelleFormel
E1=TEXTVERKETTEN("\";1;A1:D1)&"\"

Jetzt lässt Du folgendes Makro laufen:

Option Explicit


Declare Function MakePath& Lib "imagehlp.dll" Alias _
"MakeSureDirectoryPathExists" (ByVal sPath$)

Sub CreatePath_()
Dim Zelle As Range
For Each Zelle In Range("E1:E11")
MakePath Environ("UserProfile") & "\Desktop\Test\" & Zelle.Text
Next
End Sub

Gruß Ralf
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige