Unterverzeichnis in Excel VBA überprüfen und erstellen
Schritt-für-Schritt-Anleitung
Um in Excel VBA zu prüfen, ob ein Unterverzeichnis existiert und es gegebenenfalls zu erstellen, kannst Du folgendes Vorgehen nutzen:
- Öffne den VBA-Editor: Drücke
ALT
+ F11
.
- Erstelle ein neues Modul: Klicke im Menü auf
Einfügen
> Modul
.
- Füge den folgenden Code ein:
Sub Neue_Datei()
Dim jZahl As Integer, mZahl As Byte, tZahl As Byte
Dim Fso As Object, Ordnername As String
' Jahre, Monat und Tag definieren
jZahl = Year(Date)
mZahl = Month(Date)
tZahl = Day(Date)
' FileSystemObject erstellen
Set Fso = CreateObject("Scripting.FileSystemObject")
' Prüfen ob Ordner für das Jahr existiert
Ordnername = "C:\Abrechnung\" & jZahl & "\"
If Not Fso.FolderExists(Ordnername) Then
MkDir Ordnername
End If
' Prüfen ob Ordner für den Monat existiert
Ordnername = "C:\Abrechnung\" & jZahl & "\" & mZahl & "\"
If Not Fso.FolderExists(Ordnername) Then
MkDir Ordnername
End If
' Datei speichern
ActiveWorkbook.SaveAs "C:\Abrechnung\" & jZahl & "\" & mZahl & "\" & tZahl & ".xls"
End Sub
- Führe das Makro aus: Schließe den VBA-Editor und führe das Makro über
Entwicklertools
> Makros
aus.
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode zur Überprüfung eines Unterverzeichnisses in Excel VBA ist die Verwendung einer benutzerdefinierten Funktion:
Function VerzeichnisExistiert(ByVal Verzeichnis As String) As Boolean
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
VerzeichnisExistiert = Fso.FolderExists(Verzeichnis)
End Function
Sub TestVerzeichnis()
If Not VerzeichnisExistiert("C:\Abrechnung\2003\10\") Then
MkDir "C:\Abrechnung\2003\10\"
End If
End Sub
Diese Funktion kann in anderen Makros verwendet werden, um die Existenz von Verzeichnissen zu prüfen.
Praktische Beispiele
Ein praktisches Beispiel wäre, wenn Du die Werte für Jahr, Monat und Tag aus bestimmten Zellen beziehst:
Sub Neue_Datei()
Dim jZahl As Integer, mZahl As Byte, tZahl As Byte
Dim Fso As Object, Ordnername As String
jZahl = [A1] ' Jahr aus Zelle A1
mZahl = [B1] ' Monat aus Zelle B1
tZahl = [C1] ' Tag aus Zelle C1
Set Fso = CreateObject("Scripting.FileSystemObject")
Ordnername = "C:\Abrechnung\" & jZahl & "\"
If Not Fso.FolderExists(Ordnername) Then
MkDir Ordnername
End If
Ordnername = "C:\Abrechnung\" & jZahl & "\" & mZahl & "\"
If Not Fso.FolderExists(Ordnername) Then
MkDir Ordnername
End If
ActiveWorkbook.SaveAs "C:\Abrechnung\" & jZahl & "\" & mZahl & "\" & tZahl & ".xls"
End Sub
Tipps für Profis
-
Vermeide Duplikate: Wenn Du regelmäßig Daten speicherst, überlege, auch die Zeit im Dateinamen zu verwenden, um Duplikate zu vermeiden.
-
Fehlerbehandlung einfügen: Nutze On Error Resume Next
und On Error GoTo 0
, um potenzielle Fehler abzufangen, ohne dass das Makro abbricht.
-
Verzeichnisstruktur dynamisch anpassen: Passe den Speicherort dynamisch an, indem Du die Pfadstruktur in einer Excel-Tabelle verwaltest.
FAQ: Häufige Fragen
1. Wie prüfe ich, ob ein Ordner existiert?
Um zu prüfen, ob ein Ordner existiert, kannst Du das FolderExists
-Methode des FileSystemObject
verwenden.
2. Was mache ich, wenn der Ordner nicht existiert?
Wenn der Ordner nicht existiert, kannst Du ihn mit der MkDir
-Anweisung erstellen.
3. Kann ich auch mehrere Unterverzeichnisse gleichzeitig prüfen?
Ja, Du kannst in einer Schleife durch die gewünschten Verzeichnisse iterieren und mit FolderExists
prüfen, ob sie vorhanden sind.