Ordner(-Struktur) per Makro erstellen

Hakaori

Ensign
Registriert
Mai 2009
Beiträge
225
Hi Jungs,

ich suche gerade nach einer Möglichkeit, in Excel 2003 per VBA mehrere Ordner bzw.
eine Ordnerstruktur anzulegen.

In der Range A2:A100 steht ein Pfad in Form von Z:\Test\Ordner1\ (Ordner2 usw.),
den ich gerne erstellen würde, falls er nicht bereits existiert.

Ich habe es hierbei mit MkDir "Z:\" & (sPath) versucht, aber kriege sofort dann eine Fehlermeldung, wenn in A2 statt "Ordner" "Ordner1/Ordner2" steht.

Code:
Sub Excel_mkDir()
     
    Dim rCell As Range, sPath As String
     
    For Each rCell In Worksheets("Tabelle1").Range("A2:A100")
     
    sPath = rCell.Value
        
    MkDir "Z:\" & (sPath)

    Next rCell
     
    End Sub

In A2 steht idealerweise aber ein ganzer Pfad in Form von Z:\Ordner2\Ordner1, kriege das aber nicht hin, genauso wie die Überprüfung ob der Ordner / Pfad überhaupt existiert.

Hat da jemand Erfahrung mit und könnte mir helfen?
Danke und Gruß
 
Das kommt mir etwas wirr vor…

steht ein Pfad in Form von Z:\Test\Ordner1\ (Ordner2 usw.)
MkDir "Z:\" & (sPath)
Das beißt sich.

"Ordner1/Ordner2"
Stehen dort Slashes ›/‹ statt Backslashes ›\‹?
Kommando retour, der tuts tatsäclich auch mit'm ›/‹; habe ich nie zu probieren gewagt.

Ordnerstrukturen würde ich über SHELL() und MD {=MKDIR} anlegen. Diese Funktion verträgt Ordnerstrukturen (oder verschachtelte Ordner, wenn das klarer ist).
HAbe das ebne probiert. Es existiert C:\a\b. Wenn ich nun «MkDir "C:\a\b\c"» abschicke tut VBA seine Pflicht. Probiere ich aber «MkDir "C:\a\b\c\d"» kriege ich eine Fehlermeldung.
Code:
Shell (Environ("comspec") & " /c MkDir " & Chr(34) & "c:\a\a/s/d" & Chr(34))
Macht das bisschen, sogar mit dem ›/‹ ›\‹ Chaos.

Du musst da nur den Pfad hinter dem MKDIR einsetzen, die Anführungszeichen CHR(34) sind für den Fall von Leerzeichen im Namen.

CN8
 
Danke für deine Antwort, die Schrägstriche waren natürlich falsch.
Habe es jetzt so gelöst.

Code:
Option Explicit

Private Declare Function MakeSureDirectoryPathExists _
    Lib "imagehlp.dll" (ByVal Pfad As String) As Long

Public Sub Folder_Create()
    Dim lngRow As Long
    With Tabelle1
        lngRow = .Range("A" & .Rows.Count).End(xlUp).Row
        For lngRow = 2 To lngRow
            If Right(.Cells(lngRow, 1).Value, 1) <> "\" Then _
                .Cells(lngRow, 1).Value = .Cells(lngRow, 1).Value & "\"
            MakeSureDirectoryPathExists (.Cells(lngRow, 1).Text)
        Next lngRow
    End With
End Sub
 
Zurück
Oben