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") & "\Desktop\Bauprojekte\"
strMainFolder = Environ$("USERPROFILE") & "\Desktop\Bauprojekte\"
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 & "\")
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 & "\" & strRoad & "\")
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, "\", "-")
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