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
 
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