Tutorial: Rechnung als neue Datei speichern, Dateiname aus Zelle generieren & Hyperlink erstellen

Melden

Hier ist ein ausführliches Tutorial, wie du in Excel ein Rechnungs-Arbeitsblatt als neue Datei speicherst, den Dateinamen aus einer Zelle generierst und automatisch einen Hyperlink zur neuen Datei erstellst.


Dieses Tutorial zeigt dir, wie du mithilfe eines einfachen VBA-Makros den Prozess der Rechnungsarchivierung automatisierst.

Voraussetzungen

  • Eine Excel-Datei mit einem Rechnungs-Sheet.
  • Die Datei muss als Excel Arbeitsmappe mit Makros (.xlsm) gespeichert sein.
  • Ein bestimmtes Feld für die Rechnungsnummer (z. B. Zelle B5).

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 Modulfenster ein:

Sub RechnungSpeichernUndLinkErstellen()
    Dim WS As Worksheet
    Dim NeuerDateiname As String
    Dim Pfad As String
    Dim VollerPfad As String
    Dim RechnungsNummer As String
    Dim LinkZelle As Range

    ' --- EINSTELLUNGEN ---
    Set WS = ThisWorkbook.Sheets("Rechnung") ' Name deines Rechnungsblattes
    RechnungsNummer = WS.Range("B5").Value ' Zelle, aus der der Dateiname generiert wird
    Set LinkZelle = WS.Range("B10") ' Zelle, in der der Hyperlink erscheinen soll
    Pfad = ThisWorkbook.Path & "\Rechnungsarchiv\" ' Unterordner definieren

    ' Prüfen, ob der Ordner existiert, falls nicht -> erstellen
    If Dir(Pfad, vbDirectory) = "" Then
        MkDir Pfad
    End If

    ' Dateiname und Pfad definieren
    NeuerDateiname = "Rechnung_" & RechnungsNummer & ".xlsx"
    VollerPfad = Pfad & NeuerDateiname

    ' 1. Arbeitsblatt kopieren (erstellt automatisch eine neue Arbeitsmappe)
    WS.Copy

    ' 2. Formeln in Werte umwandeln (optional, damit die Rechnung statisch bleibt)
    With ActiveWorkbook.Sheets(1).UsedRange
        .Value = .Value
    End With

    ' 3. Neue Datei speichern und schließen
    Application.DisplayAlerts = False ' Überschreiben-Warnung deaktivieren
    ActiveWorkbook.SaveAs Filename:=VollerPfad, FileFormat:=xlOpenXMLWorkbook
    ActiveWorkbook.Close SaveChanges:=False
    Application.DisplayAlerts = True

    ' 4. Hyperlink in der ursprünglichen Datei erstellen
    ThisWorkbook.Activate
    WS.Hyperlinks.Add Anchor:=LinkZelle, _
                      Address:=VollerPfad, _
                      TextToDisplay:="Öffne Rechnung " & RechnungsNummer

    MsgBox "Rechnung erfolgreich unter " & NeuerDateiname & " gespeichert!", vbInformation
End Sub

Schritt 3: Den Code anpassen

Damit das Makro perfekt funktioniert, musst du eventuell kleine Anpassungen im Code vornehmen:

  • Sheets("Rechnung"): Ersetze "Rechnung" durch den tatsächlichen Namen deines Tabellenblatts.
  • Range("B5"): Ändere dies in die Zelle, in der deine Rechnungsnummer oder der gewünschte Dateiname steht.
  • Range("B10"): Das ist die Stelle, an der später der Link zur Datei erscheint.
  • Pfad: Standardmäßig erstellt das Makro einen Ordner namens "Rechnungsarchiv" am selben Ort, an dem deine Excel-Datei liegt.

Schritt 4: Einen Button erstellen (Anwendung)

Damit du das Makro einfach starten kannst, erstelle eine Schaltfläche:

  1. Gehe in Excel auf die Registerkarte 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 Arbeitsblatt.
  4. Wähle im erscheinenden Fenster das Makro RechnungSpeichernUndLinkErstellen aus und klicke auf OK.
  5. Benenne den Button um (z. B. "Rechnung archivieren").

Wie das Makro funktioniert (Erklärung)

  1. Variablen: Es legt fest, wo die Rechnung liegt und wie sie heißen soll.
  2. Ordner-Check: Es prüft, ob ein Ordner für die Archivierung existiert. Wenn nicht, legt VBA ihn automatisch an.
  3. Kopieren: Das Makro kopiert nur das aktuelle Blatt. Dadurch wird automatisch eine neue Excel-Datei im Hintergrund erstellt.
  4. Werte fixieren: Der Befehl .Value = .Value sorgt dafür, dass Formeln (wie =HEUTE()) in feste Werte umgewandelt werden. So verändert sich das Datum der Rechnung später nicht mehr.
  5. Speichern: Die neue Datei wird als .xlsx (ohne Makros) gespeichert.
  6. Hyperlink: In deiner Hauptdatei wird ein Link generiert, mit dem du die archivierte Rechnung sofort per Mausklick öffnen kannst.

Tipps für die Sicherheit

  • Stelle sicher, dass im Dateinamen (Zelle B5) keine Sonderzeichen wie / \ : * ? " < > | vorkommen, da Windows diese nicht in Dateinamen erlaubt.
  • Speichere deine Hauptdatei immer als .xlsm, sonst geht das Makro beim Schließen verloren.
0