VBA Tipp: Verzeichnis mit Unterverzeichnissen anlegen

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte ein Verzeichnis mit Unterverzeichnissen anlegen, unabhängig davon, ob das Hauptverzeichnis bzw. die Unterverzeichnisse bereits existieren oder nicht.

Lösung 1

  • Die MkDir-Anweisung alleine ist dafür nicht so ohne weiteres geeignet, da sie davon ausgeht, dass die Verzeichnisse auf höherer Ebene bereits existieren.
  • Folgende Funktion wird in einem globalen Modul gespeichert.
Public Function MakeDir(ByVal Ordnerpfad As String)
 
 'Quelle: www.dbwiki.net oder www.dbwiki.de
 
 Dim strarr() As String
 Dim i        As Long
 Dim strpfad  As String
 
 strarr() = Split(Ordnerpfad, "\")
 
 For i = LBound(strarr) To UBound(strarr)
 
   If Not strarr(i) = vbNullString Then
 
     strpfad = strpfad & strarr(i) & "\"
 
     On Error Resume Next
     MkDir strpfad
     On Error GoTo 0
 
   End If
 
 Next i
 
End Function

Lösung 2

  • Folgende Funktion benutzt das FileSystemObject. Sie wird in einem globalen Modul gespeichert.
Public Function MakeDir(ByVal Ordnerpfad As String)
 
 'Late Binding, kein Verweis auf "Microsoft Scripting Runtime" notwendig
 'Quelle: www.dbwiki.net oder www.dbwiki.de
 
 Dim objFso As Object 'FileSystemObject
 
 Set objFso = CreateObject("Scripting.FileSystemObject")
 
 If Not objFso.FolderExists(Ordnerpfad) Then
   MakeDir objFso.GetParentFolderName(Ordnerpfad)
   objFso.createFolder Ordnerpfad
 End If
 
End Function

Aufruf

 Call MakeDir(CurrentProject.Path & "\Hauptordner\Unterordner")

Wiki-Links