Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1828to1832
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

Ordner und Unterordner per Makro anlegen

Ordner und Unterordner per Makro anlegen
06.05.2021 11:53:41
Thomas
Hallo liebes Forum.
Ich bin seit Jahren treuer Leser und habe hier immer Lösungen oder Ideenansätze für meine Probleme gefunden...und konnte diese dann auch immer lösen.
Vielen Dank einfach mal in diese kompetente Runde an dieser Stelle.
Leider komme ich aktuell nicht weiter.
Folgendes Problem stellt sich mir.
Zielordner auf dem Desktop wäre: "Bauprojekte"
Ich habe eine Datei, in welcher in Spalte "A" die Namen von Orten stehen. Das sind so ca. 12000 Stück.
In Spalte "B" habe ich zu den Orten dann die Straßennahmen stehen.
Es kann aber sehr wohl vorkommen, dass in Spalte "A" z.B. 50x Berlin steht und natürlich in Spalte "B" dann 50 Straßen zu Berlin.
Mein Ziel wäre nun, dass das Makro mir im bereits existierenden Oberordner "Bauprojekte" EINEN Ordner "Berlin" anlegt und im Ordner "Berlin" dann jeweils einen Unterordner mit dem Straßennamen aus Spalte "B" angelegt wird.
Ich hoffe, ich habe mich verständlich ausdrücken können und Ihr könnt mir kurz helfen.
Bei Rückfragen bitte immer gern.
Vielen Dank vorab.
Thomas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 12:15:36
Nepumuk
Hallo Thomas,
und die Daten beginnen in Zeile?
Gruß
Nepumuk
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 12:16:59
Thomas
Oh sorry, A1 die Orte und B1 die Straßennamen.
Sorry for the missing information.
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 12:46:06
Nepumuk
Hallo Thomas,
teste mal:
Code:

[Cc][+][-]

Option Explicit Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _ ByVal DirPath As String) As Long Public Sub CreateFolders() Dim avntFolders As Variant Dim ialngIndex As Long Dim strTown As String, strMainFolder As String Dim lngReturn As Long strMainFolder = Environ$("ONEDRIVE") & "&bsol;Desktop&bsol;Bauprojekte&bsol;" ' strMainFolder = Environ$("USERPROFILE") & "&bsol;Desktop&bsol;Bauprojekte&bsol;" avntFolders = Range(Cells(1, 1), Cells(Rows.Count, 2).End(xlUp)).Value2 For ialngIndex = LBound(avntFolders, 1) To UBound(avntFolders, 1) If strTown <> avntFolders(ialngIndex, 1) Then strTown = avntFolders(ialngIndex, 1) lngReturn = MakeSureDirectoryPathExists(strMainFolder & strTown & "&bsol;") If lngReturn = 0 Then Call MsgBox("Fehler beim anlegen des Ordners " & strTown, vbCritical, "Programmabbruch") Exit Sub End If End If lngReturn = MakeSureDirectoryPathExists(strMainFolder & strTown & "&bsol;" & avntFolders(ialngIndex, _ 2) & "&bsol;") If lngReturn = 0 Then Call MsgBox("Fehler beim anlegen des Ordners " & avntFolders(ialngIndex, 2), vbCritical, "Programmabbruch") _ Exit Sub End If Next End Sub

Für eine dieser zwei Zeilen musst du dich entscheiden:
strMainFolder = Environ$("ONEDRIVE") & "\Desktop\Bauprojekte\"
strMainFolder = Environ$("USERPROFILE") & "\Desktop\Bauprojekte\"
je nachdem ob dein Desktop, wie bei mir, auf OneDrive liegt oder nicht.
Es löst keinen Fehler aus wenn du die Prozedur öffters startest. Die Ordner werden nicht mehrmals angelegt!
Gruß
Nepumuk
Anzeige
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 13:32:39
Thomas
Hallo Nepumuk.
DU BIST EIN GOTT!
Vielen Dank.
Ich habe, da der Ordner bei mir auf dem Desktop liegt, strMainFolder = Environ$("USERPROFILE") & "\Desktop\Bauprojekte\" her genommen und es klappt wunderbar.
Das hätte ich nie allein hin bekommen.
Jetzt muss ich nur noch alle Sonderzeichen durchgehen, welche Windows in einem Ordnernamen nicht zulässt und diese aus den Straßennamen entfernen.
Existiert in den Straßennamen ein solches, in Windows-Ordnernamen nicht zulässiges Sonderzeichen, bricht das Makro (zu recht) ab.
Oder, ich traue mich fast gar nicht zu fragen, hast Du dafür etwa auch eine Lösung?
VG und nochmal DANKE!
Thomas
Anzeige
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 13:35:22
Nepumuk
Hallo Thomas,
durch was sollen die "verbotenen Zeichen" ersetzt werden?
Gruß
Nepumuk
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 13:47:20
Thomas
Ach man, dass ich immer wichtige Informationen vergesse - tut mir sehr leid.
Die "verbotenen Zeichen" können gern durch einen Bindestrich (also - ) ersetzt werden.
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 13:53:51
Thomas
Ach man, dass ich immer wichtige Informationen vergesse - tut mir sehr leid.
Die "verbotenen Zeichen" können gern durch einen Bindestrich (also - ) ersetzt werden.
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 14:04:05
Nepumuk
Hallo Thomas,
dann so:
Code:

[Cc][+][-]

Option Explicit Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _ ByVal DirPath As String) As Long Public Sub CreateFolders() Dim avntFolders As Variant Dim ialngIndex As Long Dim strTown As String, strMainFolder As String, strRoad As String Dim lngReturn As Long ' strMainFolder = Environ$("ONEDRIVE") & "&bsol;Desktop&bsol;Bauprojekte&bsol;" strMainFolder = Environ$("USERPROFILE") & "&bsol;Desktop&bsol;Bauprojekte&bsol;" avntFolders = Range(Cells(1, 1), Cells(Rows.Count, 2).End(xlUp)).Value2 For ialngIndex = LBound(avntFolders, 1) To UBound(avntFolders, 1) If strTown <> avntFolders(ialngIndex, 1) Then strTown = avntFolders(ialngIndex, 1) lngReturn = MakeSureDirectoryPathExists(strMainFolder & strTown & "&bsol;") If lngReturn = 0 Then Call MsgBox("Fehler beim anlegen des Ordners " & strTown, vbCritical, "Programmabbruch") Exit Sub End If End If strRoad = KillForbiddenSigns(avntFolders(ialngIndex, 2)) lngReturn = MakeSureDirectoryPathExists(strMainFolder & strTown & "&bsol;" & strRoad & "&bsol;") If lngReturn = 0 Then Call MsgBox("Fehler beim anlegen des Ordners " & avntFolders(ialngIndex, 2), vbCritical, "Programmabbruch") _ Exit Sub End If Next End Sub Private Function KillForbiddenSigns(ByVal pvstrRoad As String) As String pvstrRoad = Replace$(pvstrRoad, "", "-") pvstrRoad = Replace$(pvstrRoad, "?", "-") pvstrRoad = Replace$(pvstrRoad, "*", "-") pvstrRoad = Replace$(pvstrRoad, "<", "-") pvstrRoad = Replace$(pvstrRoad, ">", "-") pvstrRoad = Replace$(pvstrRoad, ".", "-") pvstrRoad = Replace$(pvstrRoad, ",", "-") pvstrRoad = Replace$(pvstrRoad, "&bsol;", "-") pvstrRoad = Replace$(pvstrRoad, "+", "-") pvstrRoad = Replace$(pvstrRoad, ":", "-") pvstrRoad = Replace$(pvstrRoad, "=", "-") pvstrRoad = Replace$(pvstrRoad, "/", "-") pvstrRoad = Replace$(pvstrRoad, ";", "-") pvstrRoad = Replace$(pvstrRoad, "[", "-") pvstrRoad = Replace$(pvstrRoad, "]", "-") pvstrRoad = Replace$(pvstrRoad, "|", "-") pvstrRoad = Replace$(pvstrRoad, Chr$(34), "-") KillForbiddenSigns = pvstrRoad End Function

Gruß
Nepumuk
Anzeige
AW: Ordner und Unterordner per Makro anlegen
06.05.2021 14:14:32
Thomas
Und nochmal: VIELEN HERZLICHEN DANK.
Funktioniert einwandfrei!!!!
VG
Thomas

112 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige