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.
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).
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