Rechnungen mit ZUGFeRD 1.0, Teil 2: Access-DLL

Im ersten Teil der Beitragsreihe haben wir gezeigt, wie Sie eine DLL erzeugen können, mit der Sie von außen übergebene Daten plus eine Rechnung im PDF-Format zu einer ZUGFeRD-konformen Rechnung zusammenführen können. Das heißt, dass die PDF-Rechnung in eine Rechnung des Formats PDF/A-3 umgewandelt wird und ein XML-Dokument mit den Rechnungsdaten im computerlesbaren Format in das PDF-Dokument integriert wird. Der zweite Teil der Beitragsreihe zeigt nun, wie Sie die für das XML-Dokument benötigten Informationen an die DLL übergeben und so die ZUGFeRD-Rechnung erstellen.

DLL bereitstellen

Die DLL, die wir im ersten Teil der Beitragsreihe programmiert haben, steht automatisch auf Ihrem Rechner zur Verfügung, wenn Sie das VB-Projekt auf diesem Rechner erstellt haben. Dies führt automatisch zur Registrierung der DLL für die Nutzung von Access aus. Wenn Sie die DLL auf einem anderen Rechner einsetzen wollen, ist nach dem Kopieren der DLL auf den Zielrechner noch ein weiterer Schritt nötig. Sie müssen dann die Eingabeaufforderung mit Administratorrechten starten und den folgenden Befehl eingeben:

RegAsm.exe c:....ZUGFeRD.dll /codebase

Die Datei RegAsm.exe finden Sie in der Version für 32-bit im Verzeichnis C:\Windows\Microsoft.NET\Framework\v4.0.30319, für 64-bit im Verzeichnis C:\Windows\Microsoft.NET\Framework64\v4.0.30319. Achtung: 32-bit oder 64-bit hängt davon ab, welche Office-Version die DLL nutzen soll.

Verweis hinzufügen

Anschließend können Sie den Verweis über den Verweise-Dialog des VBA-Editors wie in Bild 1 hinzufügen.

Verweis auf die ZUGFeRD-DLL

Bild 1: Verweis auf die ZUGFeRD-DLL

Wenn Sie dann den Objektkatalog öffnen und die Bibliothek ZUGFeRD auswählen, finden Sie dort alle Befehle vor, die wir im ersten Teil mit der Visual Basic-Lösung in Visual Studio programmiert haben (siehe Bild 2).

Die ZUGFeRD-Befehle im Objektkatalog

Bild 2: Die ZUGFeRD-Befehle im Objektkatalog

Achtung: Verweis erneuern

Wenn Sie die DLL in Visual Studio hinsichtlich der öffentlichen Schnittstelle geändert haben, müssen Sie den Verweis erneuern. Dazu entfernen Sie den Verweis, schließen den Verweise-Dialog, öffnen diesen wieder und fügen den Verweis erneut hinzu.

Das Erneuern des Verweises können Sie allerdings auch über eine kleine VBA-Prozedur erledigen. Diese durchläuft die Verweise, bis es einen namens ZUGFeRD findet, merkt sich den Pfad, entfernt den Verweis und füge diesen erneut hinzu:

Public Sub VerweisAktualisieren()
     Dim objRef As Reference
     Dim strPath As String
     For Each objRef In References
         If objRef.Name = "ZUGFeRD" Then
             strPath = objRef.FullPath
             References.Remove objRef
             Exit For
         End If
     Next objRef
     References.AddFromFile strPath
End Sub

PDF-Rechnung in ZUGFeRD-konforme Rechnung umwandeln

Ein Beispiel für eine Prozedur, mit der Sie eine PDF-Rechnung etwa namens RechungOhneXML.pdf mit Rechnungsdaten im XML-Format ausstatten, finden Sie in Listing 1. Hier deklarieren wir zunächst ein Objekt des Typs ZUGFeRD.ZUGFeRD_NET und erstellen dieses dann. Danach weisen wir den einzelnen Eigenschaften des Objekts die entsprechenden Werte zu.

Public Sub ZUGFeRDTest()
     Dim objZUGFeRD As ZUGFeRD.ZUGFeRD_NET
     Set objZUGFeRD = New ZUGFeRD.ZUGFeRD_NET
     With objZUGFeRD
         .Bemerkung = "Zahlbar innerhalb von zehn Tagen."
         .Kaeufer_Name = "Klaus Müller"
         .Kaeufer_Ort = "Oberhausen"
         .Kaeufer_PLZ = "46001"
         .Kaeufer_Strasse = "Centro-Allee 1"
'        .Kaeufer_UstIDNr = ""
         .QuellPDF = CurrentProject.Path & "RechnungOhneXML.pdf"
         .Rechnungsnummer = "12345-1"
         .Verkaeufer_BIC = "COBADEFFXXX"
         .Verkaeufer_IBAN = "DE12121212121212121212"
         .Verkaeufer_Name = "André Minhorst Verlag"
         .Verkaeufer_Land = "DE"
         .Verkaeufer_Ort = "Duisburg"
         .Verkaeufer_PLZ = "47137"
         .Verkaeufer_Strasse = "Borkhofer Str. 17"
         .Verkaeufer_UstIDNr = "DE123123123"
         .Abschlaege = 0
         .AnzahlProdukt = 1
         .Aufschlaege = 0
         .Bruttobetrag = 119
         .Mehrwertsteuerbetrag = 19
         .Nettobetrag = 100
         .Produkt = "Access im Unternehmen"
         .Zahlungsreferenz = "12345-1"
         .ZielPDF = CurrentProject.Path & "RechnungMitXML.pdf"
     End With
     Debug.Print objZUGFeRD.ZUGFeRDRechnungErstellen
End Sub

Listing 1: Erstellen einer ZUGFeRD-konformen Rechnung

Nach dem Starten der Prozedur dauert es wenige Sekunden, bis die Antwort des Aufrufs im Direktbereich des VBA-Editors landet. Danach steht die PDF-Rechnung unter dem angegebenen Pfad bereit und Sie können diese im PDF-Reader öffnen.

PDF untersuchen

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar