Prüfen und Erstellen eines Ordners in Excel VBA
Schritt-für-Schritt-Anleitung
Um zu prüfen, ob ein Ordner existiert und diesen gegebenenfalls zu erstellen, kannst Du das folgende VBA-Makro verwenden:
Private Sub Speichern()
Dim strDate As String
Dim strGeneralDir As String
Dim strYearDir As String
Dim strpath As String
Dim strNameDir As String
strDate = Format(Now, "mm.yy")
strYearDir = Format(Now, "yyyy")
strGeneralDir = "c:\Unternehmensplanung\Projekte"
strNameDir = "Kat.D " & Workbooks("Unternehmensplanung - Einzelprojekt.xls").Worksheets("Projektdaten").Cells(5, 2)
strpath = strGeneralDir & " " & strYearDir
If Not PathExists(strpath) Then MkDir (strpath)
ThisWorkbook.SaveAs (strpath & "\" & strNameDir & " " & strDate & ".xls")
MsgBox ("Arbeitsmappe wird gespeichert in:" & Chr(13) & strpath & "\" & strNameDir & ".xls")
Worksheets("Tabelle").Activate
End Sub
Private Function PathExists(strpath) As Boolean
Dim x As String
On Error Resume Next
x = GetAttr(strpath) And 0
If Err = 0 Then
PathExists = True
Else
PathExists = False
End If
End Function
In diesem Beispiel wird mit der Funktion PathExists
geprüft, ob der Ordner existiert. Falls nicht, wird er mit MkDir
erstellt. Achte darauf, dass der Pfad korrekt eingegeben ist, um Fehler zu vermeiden.
Häufige Fehler und Lösungen
-
Fehler: „Pfad nicht gefunden“
- Lösung: Stelle sicher, dass der übergeordnete Ordner (
c:\Unternehmensplanung
) existiert. VBA kann keine Unterordner erstellen, wenn der übergeordnete Ordner nicht vorhanden ist.
-
Fehler: „Zugriff verweigert“
- Lösung: Überprüfe die Berechtigungen für den Ordner. Du benötigst Schreibrechte, um einen neuen Ordner zu erstellen.
-
Fehler: „Typen unverträglich“
- Lösung: Achte darauf, dass die Variablen korrekt deklariert sind. Der Typ von
strpath
sollte immer ein String sein.
Alternative Methoden
Eine alternative Methode, um einen Ordner zu erstellen, ist die Verwendung von FileSystemObject
. Hier ein Beispiel:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(strpath) Then
fso.CreateFolder strpath
End If
Diese Methode ist besonders nützlich, wenn Du mit Pfaden und Dateien in VBA arbeitest.
Praktische Beispiele
- Beispiel 1: Ordner für jeden Monat erstellen
strpath = strGeneralDir & "\" & strYearDir & "\" & Format(Now, "mm")
If Not PathExists(strpath) Then MkDir (strpath)
- Beispiel 2: Dynamische Ordnernamen
Hier kannst Du den strNameDir
dynamisch gestalten, z.B. basierend auf dem aktuellen Datum oder einer Benutzer-Input.
Tipps für Profis
- Nutze
On Error Resume Next
nur mit Bedacht, um Fehler zu behandeln. Es ist besser, spezifische Fehler abzufangen.
- Verwende
FileSystemObject
, wenn Du komplexere Dateisystemoperationen planst.
- Teste Dein Makro in einer sicheren Umgebung, um ungewollte Änderungen an wichtigen Dateien zu vermeiden.
FAQ: Häufige Fragen
1. Wie kann ich prüfen, ob ein spezifischer Ordner existiert?
Du kannst die Funktion PathExists
verwenden, um zu prüfen, ob ein bestimmter Ordner vorhanden ist.
2. Was passiert, wenn der Ordner bereits existiert?
In diesem Fall wird der Code MkDir
nicht ausgeführt, und die Arbeitsmappe wird einfach im vorhandenen Ordner gespeichert.
3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, dieser VBA-Code sollte in den meisten Excel-Versionen funktionieren, die VBA unterstützen. Achte jedoch darauf, dass die Pfade und Dateinamen korrekt sind.