Excel-Tutorial: Arbeitsmappe nach Zellinhalt benennen und speichern (VBA)

Melden

Hier ist ein ausführliches Tutorial, wie du eine Excel-Arbeitsmappe basierend auf dem Inhalt einer bestimmten Zelle automatisch benennen und speichern kannst.


In diesem Tutorial lernst du, wie du mithilfe eines einfachen VBA-Makros den Dateinamen deiner Excel-Datei dynamisch aus einer Zelle (z. B. "A1") generierst und die Datei speicherst. Das ist besonders hilfreich für Rechnungen, Berichte oder Protokolle.

Voraussetzungen

  1. Entwicklertools aktivieren: Falls du die Registerkarte "Entwicklertools" in Excel nicht siehst, gehe zu Datei > Optionen > Menüband anpassen und setze einen Haken bei „Entwicklertools“.
  2. Dateiformat: Damit Makros funktionieren, muss die Datei später als Excel-Arbeitsmappe mit Makros (.xlsm) gespeichert werden.

Schritt 1: Den VBA-Editor öffnen

  1. Öffne deine Excel-Datei.
  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: Den VBA-Code einfügen

Kopiere den folgenden Code und füge ihn in das neue Modul-Fenster ein:

Sub SpeichernUnterZellinhalt()
    Dim Pfad As String
    Dim Dateiname As String
    Dim VollerPfad As String

    ' 1. Pfad festlegen (In diesem Beispiel der gleiche Ordner wie die aktuelle Datei)
    ' Falls die Datei noch nie gespeichert wurde, wird der Standard-Dokumentenpfad genutzt
    Pfad = ThisWorkbook.Path & "\"

    ' 2. Zellinhalt für den Dateinamen festlegen (Hier Zelle A1 in Tabelle1)
    ' Du kannst "Tabelle1" und "A1" nach Bedarf anpassen
    Dateiname = Sheets("Tabelle1").Range("A1").Value

    ' 3. Überprüfung, ob die Zelle leer ist
    If Dateiname = "" Then
        MsgBox "Fehler: Die Zelle A1 ist leer. Bitte gib einen Namen ein!", vbCritical
        Exit Sub
    End If

    ' 4. Den vollen Pfad inklusive Dateiendung (.xlsm) zusammensetzen
    VollerPfad = Pfad & Dateiname & ".xlsm"

    ' 5. Speichervorgang ausführen
    On Error Resume Next
    ThisWorkbook.SaveAs Filename:=VollerPfad, FileFormat:=52 ' 52 = xlOpenXMLWorkbookMacroEnabled

    ' Fehlermeldung, falls Speichern fehlschlägt (z.B. wegen ungültiger Zeichen)
    If Err.Number <> 0 Then
        MsgBox "Fehler beim Speichern! Überprüfe, ob der Zellinhalt ungültige Zeichen enthält (\ / : * ? "" < > |)", vbCritical
    Else
        MsgBox "Datei erfolgreich gespeichert unter: " & VollerPfad, vbInformation
    End If
    On Error GoTo 0
End Sub

Schritt 3: Den Code anpassen

  • Zelle ändern: Wenn der Name in einer anderen Zelle steht (z. B. B5), ändere Range("A1") in Range("B5").
  • Tabellenblatt ändern: Wenn dein Blatt nicht "Tabelle1" heißt, passe den Namen in Sheets("Tabelle1") an.
  • Pfad ändern: Wenn du die Datei in einem festen Ordner speichern willst (z. B. C:\Rechnungen), ändere die Zeile Pfad so ab: Pfad = "C:\Rechnungen\"

Schritt 4: Das Makro ausführen

Es gibt zwei Möglichkeiten, das Makro zu starten:

Methode A: Über das Menü

  1. Gehe zurück zu Excel.
  2. Drücke ALT + F8.
  3. Wähle SpeichernUnterZellinhalt und klicke auf Ausführen.

Methode B: Mit einer Schaltfläche (Empfohlen)

  1. Gehe auf die Registerkarte Einfügen > Illustrationen > Formen und zeichne ein Rechteck.
  2. Klicke mit der rechten Maustaste auf das Rechteck und wähle Makro zuweisen.
  3. Wähle SpeichernUnterZellinhalt aus und bestätige mit OK.
  4. Jetzt wird die Datei jedes Mal gespeichert, wenn du auf die Schaltfläche klickst.

Wichtige Hinweise

  • Ungültige Zeichen: Achte darauf, dass in der Zelle keine Zeichen stehen, die in Dateinamen verboten sind (z. B. / \ : * ? " < > |).
  • Sicherheit: Wenn du die Datei an andere weitergibst, müssen diese "Makros aktivieren" wählen, damit die Schaltfläche funktioniert.
  • Dateiformat: Der Code nutzt FileFormat:=52. Das sorgt dafür, dass die Datei als .xlsm gespeichert wird, damit das Makro selbst erhalten bleibt.

Zusammenfassung

Mit diesem Skript automatisierst du die Benennung deiner Dateien. Sobald du den Wert in Zelle A1 änderst und auf Speichern klickst, erstellt Excel eine Kopie (oder überschreibt die bestehende Datei) mit dem neuen Namen im gleichen Verzeichnis.

0