Speichern in variablen Ordnern mit Excel VBA
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei in einem variablen Ordner per Makro zu speichern, folge diesen Schritten:
-
Öffne den VBA-Editor: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Erstelle ein neues Modul: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
-
Füge den folgenden Code ein:
Sub SpeichernInVariablenOrdner()
Dim strPfad As String
Dim strFilename As String
' Den Pfad aus Zelle A1, Tabelle1 auslesen
strPfad = "Y:\05\2021\" & Worksheets("Tabelle1").Range("A1").Value & "\01 Bericht\"
strFilename = strPfad & "2000.xlsm"
' Datei speichern
ThisWorkbook.SaveAs Filename:=strFilename, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
-
Führe das Makro aus: Drücke F5
, um das Makro auszuführen.
-
Überprüfe den Speicherort: Deine Datei sollte jetzt im angegebenen Ordner gespeichert sein.
Häufige Fehler und Lösungen
-
Fehler beim Kompilieren: Syntaxfehler:
- Stelle sicher, dass alle Zeilen korrekt formatiert sind. Zeilenumbrüche sollten im Code nicht vorhanden sein, wenn sie nicht mit dem
_
Operator verbunden sind.
-
Datei wird nicht gespeichert:
- Überprüfe, ob der Pfad korrekt ist und ob der Ordner existiert. Du kannst den Pfad in einer MsgBox anzeigen lassen, um sicherzustellen, dass er richtig ist.
MsgBox strPfad
-
Speichername wird als "strFilename" angezeigt:
- Achte darauf, dass beim Speichern der Datei der Name ohne Anführungszeichen übergeben wird.
Alternative Methoden
Wenn Du nicht nur Dateien speichern, sondern auch neue Ordner erstellen möchtest, kannst Du das folgendermaßen tun:
Sub OrdnerErstellenUndSpeichern()
Dim strPfad As String
strPfad = "Y:\05\2021\" & Worksheets("Tabelle1").Range("A1").Value & "\01 Bericht\"
' Überprüfe, ob der Ordner existiert, und erstelle ihn, falls nicht
If Dir(strPfad, vbDirectory) = "" Then
MkDir strPfad
End If
' Datei speichern
ThisWorkbook.SaveAs Filename:=strPfad & "2000.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
Praktische Beispiele
-
Speichern als PDF: Um deine Arbeitsmappe als PDF im selben Ordner zu speichern, kannst Du den folgenden Code verwenden:
Sub SpeichernAlsPDF()
Dim strPfad As String
Dim strName As String
strPfad = "Y:\05\2021\" & Worksheets("Tabelle1").Range("A1").Value & "\01 Bericht\"
strName = Worksheets("Tabelle1").Range("A1").Value & "_" & Format(Date, "YYYYMMDD") & ".pdf"
' Exportiere die aktive Tabelle als PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPfad & strName, Quality:=xlQualityStandard
End Sub
-
Speichern mit Benutzerdefiniertem Dateinamen: Du kannst den Dateinamen auch dynamisch aus einer anderen Zelle beziehen:
strName = Worksheets("Tabelle1").Range("A2").Value & ".xlsm"
Tipps für Profis
-
Nutze Application.DisplayAlerts = False
vor dem Speichern, um unerwünschte Bestätigungsdialoge zu vermeiden. Vergiss nicht, es wieder auf True
zu setzen.
-
Verwende On Error Resume Next
, um Fehler zu ignorieren, während Du den Pfad überprüfst oder den Ordner erstellst.
-
Halte deine Code-Struktur sauber, indem Du Kommentare hinzufügst, um die Funktionen zu erklären.
FAQ: Häufige Fragen
1. Wie wähle ich den Pfad aus und speichere ihn in einer Variable?
Du kannst den Pfad direkt aus einer Zelle auslesen, wie im Beispiel oben gezeigt. Stelle sicher, dass die Zelle den richtigen Wert enthält.
2. Was passiert, wenn der Ordner nicht existiert?
Das Makro wird einen Fehler erzeugen. Du kannst jedoch den Code anpassen, um den Ordner zu erstellen, falls er nicht vorhanden ist.
3. Wie speichere ich die Datei als PDF?
Verwende die ExportAsFixedFormat
-Methode, um die Datei als PDF zu speichern, wie im praktischen Beispiel gezeigt.
4. Welche Excel-Version benötige ich für dieses Makro?
Das Makro sollte in Excel 2010 und späteren Versionen funktionieren, da die SaveAs und ExportAsFixedFormat Methoden in diesen Versionen verfügbar sind.