Nicht jede Rechnung entsteht in Excel. Viele Unternehmen schreiben ihre Rechnungen in Word oder erzeugen sie als Bericht aus einer Access Datenbank. Auch hier müssen Sie auf die E-Rechnung nicht mit einer neuen Software reagieren: SmartTools bietet für beide Programme eigene Lösungen an, mit denen Sie Ihre bestehenden Vorlagen und Datenbanken erweitern.
Excel-Inside Solutions stellt Ihnen in diesem Artikel die SmartTools E-Rechnung VBA-Bibliothek 2.5 für Word und SmartTools E-Rechnung 2.5 für Access vor, jeweils mit einem praxisnahen Codebeispiel. Die Grundlagen zur Pflicht finden Sie im Hauptartikel E-Rechnungspflicht erklärt.
E-Rechnungen aus Word
Mit der SmartTools E-Rechnung VBA-Bibliothek 2.5 für Word erweitern Sie Ihre Rechnungsvorlage in Word per VBA um die Ausgabe als ZUGFeRD in allen Profilen oder als XRechnung in den Syntaxvarianten CII und UBL. Nach der Installation setzen Sie in der VBA Entwicklungsumgebung einen Verweis auf die Bibliothek. Zum Lieferumfang gehört eine ungeschützte Mustervorlage.
- E-Rechnungen im Format ZUGFeRD und XRechnung erstellen
- E-Rechnungen offline gegen die offiziellen Regeln prüfen
- E-Rechnungen übersichtlich anzeigen
- Kompatibel mit Word 365, 2024, 2021, 2019, 2016 und 2013
Die Daten liegen in Inhaltssteuerelementen
Anders als in Excel gibt es in Word keine Zellen. Bewährt haben sich Inhaltssteuerelemente, die Sie über die Registerkarte Entwicklertools einfügen. Jedes Steuerelement erhält ein eindeutiges Tag, zum Beispiel KundeName oder KundePLZ. Über dieses Tag liest Ihr Makro den Wert zuverlässig aus, unabhängig davon, wo das Feld im Dokument steht.
'*************************************************** ' VBA-Code erstellt 9/2026 ' A. Eckl - Excel-Inside Solutions ' https://excel-inside.de ' Word: Werte aus Inhaltssteuerelementen lesen, ' Rechnung als PDF ausgeben und als ZUGFeRD speichern '*************************************************** Option Explicit Function WertAusFeld(strTag As String) As String Dim ccsFelder As ContentControls Set ccsFelder = ActiveDocument.SelectContentControlsByTag(strTag) If ccsFelder.Count = 0 Then Exit Function '** Platzhaltertext nicht als Inhalt uebernehmen If ccsFelder(1).ShowingPlaceholderText Then Exit Function WertAusFeld = Trim$(ccsFelder(1).Range.Text) End Function Sub ZUGFeRDAusWord(objZFRechnung As Object) Dim strPdf As String '** Dateiname der PDF aus dem Dokumentnamen ableiten strPdf = Left$(ActiveDocument.FullName, _ InStrRev(ActiveDocument.FullName, ".")) & "pdf" '** Schritt 1: Das gewohnte Rechnungsbild als PDF ausgeben ActiveDocument.ExportAsFixedFormat OutputFileName:=strPdf, _ ExportFormat:=wdExportFormatPDF '** Schritt 2: Rechnungsdaten zuweisen (Auszug) With objZFRechnung.Buyer .Name = WertAusFeld("KundeName") .PostalAddress.AddressLine1 = WertAusFeld("KundeStrasse") .PostalAddress.PostCode = WertAusFeld("KundePLZ") .PostalAddress.City = WertAusFeld("KundeOrt") .PostalAddress.CountryCode = WertAusFeld("KundeLand") End With '** Schritt 3: XML einbetten und in PDF/A wandeln objZFRechnung.Save strPdf End Sub
Das Rechnungsobjekt legen Sie mit der Klasse des gewünschten Profils an, die genauen Klassennamen finden Sie in der Mustervorlage. Zur Kontrolle zeigen Sie die fertige E-Rechnung mit der Anweisung wdE_Rechnung.ShowInvoiceOverview an.
Tipps für Word Vorlagen
- Platzhalter abfangen. Ein leeres Inhaltssteuerelement liefert seinen Platzhaltertext zurück. Die Prüfung auf ShowingPlaceholderText im Beispiel verhindert, dass etwa „Klicken Sie hier“ als Kundenname in der E-Rechnung landet.
- Positionen in einer Tabelle. Führen Sie die Rechnungspositionen in einer Word Tabelle mit festen Spalten. Beachten Sie beim Auslesen, dass der Text einer Tabellenzelle am Ende zwei Steuerzeichen enthält, die Sie vor der Übernahme entfernen müssen.
- Beträge als Zahl übergeben. Word kennt nur Text. Wandeln Sie Mengen und Preise vor der Zuweisung mit CDbl um und runden Sie sie auf zwei Nachkommastellen.
- Dokumentvorlage mit Makros. Speichern Sie die Rechnungsvorlage als Vorlage mit Makros (dotm). Jede neue Rechnung entsteht dann als eigenes Dokument, der Code bleibt zentral in der Vorlage.
E-Rechnungen aus Access
SmartTools E-Rechnung 2.5 für Access ist das umfangreichste Paket der Reihe. Es enthält alles, um in Ihren Datenbanken E-Rechnungen zu erstellen, einzulesen, anzuzeigen und zu validieren. Der große Vorteil: Ihr bisheriger Ablauf zum Erstellen der PDF Rechnung aus einem Bericht bleibt vollständig erhalten, am Rechnungsbericht selbst ändern Sie nichts.
- Alle ZUGFeRD Profile einschließlich Extended sowie XRechnung in CII und UBL
- Mehrstufige Unterpositionen im Profil Extended nach ZUGFeRD 2.5
- Import empfangener E-Rechnungen in Ihre Tabellen
- Validierung nach den aktuellen offiziellen Regeln, lokal auf Ihrem System
- Speichern des Prüfergebnisses zusammen mit der E-Rechnung
- Anzeige als HTML, zum Beispiel in einem Browser Steuerelement Ihres Formulars
- Kompatibel mit Access 365, 2024, 2021, 2019, 2016, 2013 und 2010
Beispiel: Bericht als PDF und daraus eine ZUGFeRD Rechnung
Das folgende Beispiel gibt den Rechnungsbericht für eine bestimmte Rechnung als PDF aus, liest die Kopfdaten aus einer Abfrage und speichert anschließend die ZUGFeRD Rechnung. Namen von Bericht, Abfrage und Feldern passen Sie an Ihre Datenbank an.
'*************************************************** ' VBA-Code erstellt 9/2026 ' A. Eckl - Excel-Inside Solutions ' https://excel-inside.de ' Access: Rechnungsbericht als PDF ausgeben und daraus ' eine ZUGFeRD Rechnung erzeugen '*************************************************** Option Explicit Sub ERechnungAusAccess(lngRechnungID As Long, objZFRechnung As Object) Dim rs As DAO.Recordset Dim strPdf As String strPdf = CurrentProject.Path & "\Rechnung_" & lngRechnungID & ".pdf" '** Schritt 1: Bisherigen Bericht gefiltert als PDF ausgeben DoCmd.OpenReport "rptRechnung", acViewPreview, , _ "RechnungID = " & lngRechnungID, acHidden DoCmd.OutputTo acOutputReport, "rptRechnung", acFormatPDF, strPdf DoCmd.Close acReport, "rptRechnung" '** Schritt 2: Kopfdaten aus der Abfrage uebernehmen (Auszug) Set rs = CurrentDb.OpenRecordset( _ "SELECT * FROM qryRechnungskopf WHERE RechnungID = " & lngRechnungID, _ dbOpenSnapshot) With rs objZFRechnung.Seller.Name = !Lieferant_Name objZFRechnung.Seller.PostalAddress.AddressLine1 = !Lieferant_Strasse objZFRechnung.Seller.PostalAddress.PostCode = !Lieferant_PLZ objZFRechnung.Seller.PostalAddress.City = !Lieferant_Ort objZFRechnung.Buyer.Name = !Kunde_Name End With rs.Close '** Schritt 3: XML einbetten und in PDF/A wandeln objZFRechnung.Save strPdf End Sub
Die Positionen übertragen Sie auf dieselbe Weise aus einem Recordset der Positionstabelle. Für das Profil Extended legen Sie zu einer Position beliebig viele Unterpositionen an und hängen diese mit der Methode AddLine an die übergeordnete Position.
Tipps für Access Datenbanken
- Eine Abfrage für die Kopfdaten. Bündeln Sie Rechnung, Kunde und eigene Firmendaten in einer Abfrage. Der VBA Code bleibt dadurch kurz und übersichtlich.
- Codes in Nachschlagetabellen. Pflegen Sie Einheitencodes, Steuerkategorien und Ländercodes in eigenen Tabellen und verknüpfen Sie diese mit Ihren Artikeln und Kunden.
- Eingangsrechnungen automatisch erfassen. Mit der Methode Import lesen Sie empfangene E-Rechnungen ein und schreiben Rechnungssteller, Betrag und Fälligkeit direkt in Ihre Tabellen.
- PDF und Daten nebeneinander prüfen. Mit ConvertToHTML wandeln Sie eine E-Rechnung in eine lesbare Ansicht um. In einem Formular können Sie so bei ZUGFeRD Rechnungen PDF und XML Inhalt nebeneinander zur Prüfung anzeigen.
- Prüfergebnis mitspeichern. Nach der Empfehlung der Finanzverwaltung sollte das Ergebnis der Validierung aufbewahrt werden. Die Access Lösung erledigt das mit einer einzigen Codezeile.
- Lizenzmodell für verteilte Datenbanken. Die erste Lizenz dient als Basis für Entwicklung und Einsatz, weitere Arbeitsplätze sind deutlich günstiger. Für Entwickler, die ihre Datenbank an viele Anwender verteilen, gibt es Pakete mit Client Lizenzen.
Word, Access oder doch Excel?
Die Wahl richtet sich nach dem Ort, an dem Ihre Rechnungsdaten heute liegen. Schreiben Sie Rechnungen als Dokument, ist die Word Bibliothek die natürliche Erweiterung. Entstehen Rechnungen aus einer Datenbank mit Kunden, Aufträgen und Artikeln, führt an der Access Lösung kein Weg vorbei. Liegen Ihre Vorlagen in Excel, lesen Sie unsere Artikel zur E-Rechnung VBA-Bibliothek für Excel und zum E-Rechnung Assistenten für Excel, der ganz ohne Programmierung auskommt.
Alle Artikel zur E-Rechnung
- E-Rechnungspflicht erklärt: Zeitplan, Formate und Lösungen für Excel, Word und Access
- E-Rechnung aus Excel ohne Programmierung: der SmartTools E-Rechnung Assistent 3.0
- E-Rechnungen per VBA erzeugen: die SmartTools E-Rechnung VBA-Bibliothek für Excel
- E-Rechnungen aus Word und Access erstellen (Sie lesen diesen Artikel)
- Alle E-Rechnungslösungen im Überblick und bestellen
Word Vorlage oder Access Datenbank erweitern
Alle SmartTools E-Rechnungslösungen erhalten Sie über unsere Produktseite. Excel-Inside Solutions entwickelt seit über 25 Jahren Lösungen mit Excel, Word und Access und integriert die E-Rechnung auf Wunsch direkt in Ihre bestehende Vorlage oder Datenbank.
Häufige Fragen zur E-Rechnung mit Word und Access
Kann ich meine bestehende Word Rechnungsvorlage weiter nutzen?
Ja. Mit der SmartTools E-Rechnung VBA-Bibliothek für Word erweitern Sie Ihre Vorlage per VBA um die Ausgabe als ZUGFeRD oder XRechnung. Das gewohnte Rechnungsbild bleibt erhalten.
Muss ich meinen Access Rechnungsbericht ändern?
Nein. Der bisherige Ablauf zum Erstellen der PDF Rechnung bleibt vollständig erhalten. Sie ergänzen lediglich einige VBA Anweisungen, welche die Daten dem Rechnungsobjekt zuweisen und die ZUGFeRD Rechnung speichern.
Kann ich E-Rechnungen in Access einlesen?
Ja. Mit der Methode Import lesen Sie empfangene E-Rechnungen vollständig ein und übernehmen die Inhalte in Ihre Tabellen. Zusätzlich lassen sie sich validieren und als HTML in einem Formular anzeigen.
Werden Unterpositionen unterstützt?
Ja. Die Access Lösung unterstützt im Profil Extended nach ZUGFeRD 2.5 Unterpositionen über mehrere Ebenen.
Anfrage zu Word oder Access
Beschreiben Sie kurz Ihre Vorlage oder Datenbank und den gewünschten Ablauf. Wir melden uns mit einer Einschätzung und einem unverbindlichen Angebot.

