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

  1. Öffne deine Excel-Datei (sie muss als .xlsm gespeichert sein).
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. 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:

  1. Der Pfad: Ändere Pfad = "C:\Dein\Pfad\Hier\" in den Ordner, in dem die Datei landen soll.
  2. 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):
    1. Gehe in Excel zum Reiter Entwicklertools (falls nicht sichtbar: Rechtsklick auf das Menüband -> Menüband anpassen -> Entwicklertools aktivieren).
    2. Klicke auf Einfügen -> Schaltfläche (Formularsteuerelement).
    3. Zeichne einen Button auf dein Blatt und wähle das Makro SpeichernAlsXLSX aus.

Wichtige Hinweise

  • Format 51: Dies ist der interne Excel-Code für .xlsx. Da .xlsx keine 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 = False sorgt 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 & "\".

0