Rechnungen mit VBA automatisch erstellen
Wer regelmäßig Rechnungen aus Excel heraus verschickt, spart mit einem kleinen VBA-Makro viel Klickarbeit: Rechnungsnummer hochzählen, aktuelles Datum setzen und die fertige Rechnung als PDF ablegen – alles auf einen Knopfdruck.
Ausgangslage
Eine Rechnungsvorlage mit festen Zellen für Rechnungsnummer, Datum und Kunde:
| A | B | |
|---|---|---|
| 1 | Rechnungs-Nr. | RE-2026-0148 |
| 2 | Datum | 06.08.2026 |
| 3 | Kunde | Musterfirma GmbH |
Makro: Nummer hochzählen, Datum setzen, als PDF speichern
Sub RechnungErstellen()
Dim ws As Worksheet
Dim neueNr As Long
Set ws = ThisWorkbook.Sheets("Rechnung")
' Laufende Nummer aus Zelle B1 auslesen und hochzählen
neueNr = Val(Mid(ws.Range("B1").Value, 9)) + 1
ws.Range("B1").Value = "RE-2026-" & Format(neueNr, "0000")
' Aktuelles Datum eintragen
ws.Range("B2").Value = Date
' Als PDF im Unterordner "Rechnungen" speichern
ws.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Rechnungen\" & ws.Range("B1").Value & ".pdf"
MsgBox "Rechnung " & ws.Range("B1").Value & " wurde erstellt.", vbInformation
End Sub
Schritt für Schritt
- Alt+F11 öffnet den VBA-Editor, dort ein neues Modul einfügen.
- Den Code einfügen und den Blattnamen (
"Rechnung") an dein Tabellenblatt anpassen. - Im Ordner der Arbeitsmappe einen Unterordner
Rechnungenanlegen, in den die PDFs gespeichert werden. - Das Makro über Entwicklertools → Makros ausführen oder einer Schaltfläche im Tabellenblatt zuweisen (Einfügen → Formen → Rechtsklick → Makro zuweisen).
Lege die Rechnungspositionen als Excel-Tabelle (Strg+T) an. Formeln für Zwischensumme, Mehrwertsteuer und Gesamtbetrag beziehen sich dann automatisch auf alle Zeilen, auch wenn du später Positionen hinzufügst.
Ein Makro zum Hochzählen der Rechnungsnummer ersetzt keine ordnungsgemäße, GoBD-konforme Rechnungsnummernvergabe. Prüfe bei geschäftlicher Nutzung, ob eine lückenlose, fortlaufende Nummerierung sichergestellt ist – insbesondere wenn mehrere Personen parallel Rechnungen erstellen.
Häufige Fehler
- Laufzeitfehler beim PDF-Export – der Zielordner existiert nicht. Lege
Rechnungenvorher an oder erstelle ihn im Code mitMkDir. - Falsche Nummer nach Neustart –
Mid(...,9)setzt ein festes Textformat wieRE-2026-0148voraus. Ändert sich das Format, muss auch die Formel im Code angepasst werden. - Makro nicht verfügbar – die Datei wurde als
.xlsxstatt.xlsmgespeichert.