Verwendet man Microsoft Office, zum Beispiel Access, Excel oder Outlook, ist VBA ein willkommener Helfer, wenn es darum geht Arbeitsabläufe zu automatisieren und immer wiederkehrende Aufgaben mit einem Klick über Makros ausführen zu lassen.
Dabei kommt es oft vor, dass man Dateien, wie z.B. E-Mail-Anhänge, in einem Ordner speichern möchte. Meistens muss der passende Ordner dafür ebenfalls erstellt werden.
Einen neuen Ordner kann man sich in VBA ganz leicht mit dieser Funktion erstellen:
MkDir(c:\Users\username\meinPfad\neuerOrdnerName)
Code-Beispiel 1: Neuen Ordner erstellen
Das folgende Code-Beispiel ist eine öffentliche Funktion zum Erzeugen eines neuen Ordners. Der Pfad mit dem Ordnernamen wird innerhalb der Funktion definiert. Es wird in diesem Fall überprüft, ob der Ordner vorhanden ist oder nicht. Ist letzteres der Fall, wird die Funktion MkDir(…) ausgeführt und eine Meldung (MsgBox) ausgegeben. Die Zeile mit MsgBox ist für den ersten Test gedacht. Diese kann man löschen, da die Meldung in der produktiven Anwendung störend sein dürfte.
' erstellt einen Ordner
Public Sub MakeDir()
'String für Ordnerpfad definieren
Dim strFolderPath As String
strFolderPath = "c:\Users\username\meinPfad\neuerOrdnerName"
' Überprüfen, ob Ordner bereits existiert
If Dir(strFolderPath, vbDirectory) = "" Then
' Ordner anlegen
MkDir (strFolderPath)
MsgBox "Ordner wurde angelegt!"
Else
MsgBox "Ordner ist vorhanden!"
End If
End Sub
Code-Beispiel 2: Ordnerpfad als Parameter
Das folgende Code-Beispiel ist geeignet, um es in größeren Projekten zu verwenden. Die Funktion wird hier als Private deklariert. Dadurch erscheint diese auch nicht als ausführbares Makro. Der Ordnerpfad inkl. den neuen Ordnernamen wird als Parameter übergeben. So kann man diese Funktion aus anderen Funktionen, Klassen oder Formularen aufrufen.
' erstellt einen Ordner
Private Sub MakeDir(strFolderPath As String)
' Überprüfen, ob Ordner bereits existiert
If Dir(strFolderPath, vbDirectory) = "" Then
' Ordner anlegen
MkDir (strFolderPath)
Else
' mache irgendwas
End If
End Sub
Aufrufen der Funktionen
Will man die erstellten Funktionen innerhalb von anderen Code ausführen, so ruft man diese wie folgt auf:
' Code-Beispiel 1
MakeDir
' Code-Beispiel 2
Dim strNewFolderPath As String
strNewFolderPath = "c:\Users\username\meinPfad\neuerOrdnerName"
MakeDir strNewFolderPath
'Code-Beispiel 2 alternativ
MakeDir "c:\Users\username\meinPfad\neuerOrdnerName"
Microsoft Office: Ordner mit Makro erstellen
Oder man führt die Funktion, sofern diese als Public deklariert ist, direkt über den Makro-Editor der jeweiligen Office-Anwendung aus.

Dieses Konzept ist unzuverlässig, weil nicht sichergestellt ist dass der übergeordnete Ordner existiert. Damit kann mkdir() fehlschlagen.
Hallo Peter, vielen Dank für den Hinweis. Sie sagen es ja bereits in Ihrem Kommentar. Es handelt sich um ein „Konzept“. Bei einem Konzept handelt es sich per Definition nicht um eine ausgereifte Lösung.
Wenn man den FolderPath, wie im Artikel dargestellt, so hart in den Code reinprogrammiert, sollte man manuell sicherstellen, dass der Ordner auch existiert. Ansonsten gibt es einen Error und spätestens dann sollte man FolderPath korrigieren.
Natürlich kann man das Script noch verbessern, in dem man die Existenz des übergeordneten Verzeichnisses abfragt. Wie man das machen kann, haben wir in einem anderen Artikel beschrieben: https://ekiwi-blog.de/7691/vba-pruefen-ob-ein-ordner-verzeichnis-existiert-folderexists/