Excel VBA: Datei als .xlsx speichern (Speicherort & Dateiname aus Zellen)
Melden
Hier ist ein ausführliches Tutorial, wie du eine Excel-Datei mit Makros (.xlsm) automatisch als normale Excel-Datei (.xlsx) an einem bestimmten Ort speicherst, wobei der Dateiname aus Zellwerten generiert wird.
Dieses Tutorial zeigt dir, wie du eine Arbeitskopie deiner Datei ohne Makros erstellst. Das ist besonders nützlich, wenn du Berichte versenden möchtest, aber den VBA-Code für dich behalten willst.
Schritt 1: Den VBA-Editor öffnen
- Öffne deine Excel-Datei (sie muss als .xlsm gespeichert sein).
- Drücke
ALT+F11, um den VBA-Editor zu öffnen. - Gehe im Menü auf Einfügen -> Modul. Ein leeres Fenster erscheint.
Schritt 2: Der VBA-Code
Kopiere den folgenden Code in das neue Modul:
Sub SpeichernAlsXLSX()
Dim Pfad As String
Dim Dateiname As String
Dim VollerPfad As String
' 1. Speicherpfad festlegen (Wichtig: Backslash am Ende!)
' Beispiel: "C:\Benutzer\Name\Documents\Rechnungen\"
Pfad = "C:\Dein\Pfad\Hier\"
' 2. Dateiname aus Zellwerten generieren (z.B. Tabellenblatt1, Zellen A1 und B1)
' Hier wird der Wert aus A1 und B1 mit einem Unterstrich verbunden
Dateiname = Sheets("Tabelle1").Range("A1").Value & "_" & _
Sheets("Tabelle1").Range("B1").Value
' 3. Den vollständigen Pfad inkl. Dateiendung zusammensetzen
VollerPfad = Pfad & Dateiname & ".xlsx"
' 4. Warnmeldungen ausschalten (z.B. "Datei existiert bereits" oder "Makros gehen verloren")
Application.DisplayAlerts = False
On Error GoTo FehlerHandler
' 5. Die Datei speichern
' FileFormat:=51 entspricht dem .xlsx Format (ohne Makros)
ActiveWorkbook.SaveAs Filename:=VollerPfad, FileFormat:=51
MsgBox "Datei wurde erfolgreich gespeichert unter:" & vbCrLf & VollerPfad, vbInformation, "Erfolg"
' 6. Warnmeldungen wieder einschalten
Application.DisplayAlerts = True
Exit Sub
FehlerHandler:
Application.DisplayAlerts = True
MsgBox "Fehler beim Speichern! Sicherstellen, dass der Pfad existiert.", vbCritical, "Fehler"
End Sub
Schritt 3: Den Code anpassen
Damit das Makro bei dir funktioniert, musst du zwei Stellen im Code anpassen:
- Der Pfad: Ändere
Pfad = "C:\Dein\Pfad\Hier\"in den Ordner, in dem die Datei landen soll. - Die Zellen: Ändere
Sheets("Tabelle1").Range("A1")entsprechend deiner Tabelle. Du kannst beliebig viele Zellen kombinieren (z. B. Kundennummer und Datum).
Schritt 4: Das Makro ausführen
Du hast mehrere Möglichkeiten, das Makro zu starten:
- Über den Editor: Klicke in den Code und drücke
F5. - Über eine Schaltfläche (Empfohlen):
- Gehe in Excel zum Reiter Entwicklertools (falls nicht sichtbar: Rechtsklick auf das Menüband -> Menüband anpassen -> Entwicklertools aktivieren).
- Klicke auf Einfügen -> Schaltfläche (Formularsteuerelement).
- Zeichne einen Button auf dein Blatt und wähle das Makro
SpeichernAlsXLSXaus.
Wichtige Hinweise
- Format 51: Dies ist der interne Excel-Code für
.xlsx. Da.xlsxkeine Makros enthalten kann, entfernt Excel den VBA-Code in der neuen Datei automatisch. Die Originaldatei (.xlsm) bleibt davon unberührt, solange du sie danach nicht schließt und die Änderungen dort verwirfst. - Existierende Dateien: Der Befehl
Application.DisplayAlerts = Falsesorgt dafür, dass eine bereits vorhandene Datei mit dem gleichen Namen ohne Nachfrage überschrieben wird. - Pfad-Validierung: Stelle sicher, dass der Ordnerpfad tatsächlich existiert, sonst bricht das Makro mit einer Fehlermeldung ab.
Tipp: Wenn du den Pfad dynamisch machen willst (z.B. immer der gleiche Ordner, in dem die aktuelle Datei liegt), verwende Pfad = ActiveWorkbook.Path & "\".