{"id":215,"date":"2024-11-06T12:01:27","date_gmt":"2024-11-06T11:01:27","guid":{"rendered":"https:\/\/www.eudatabase.de\/?page_id=215"},"modified":"2024-12-12T09:55:00","modified_gmt":"2024-12-12T08:55:00","slug":"e-rechnung-mit-vba","status":"publish","type":"page","link":"https:\/\/www.eudatabase.de\/index.php\/e-rechnung-mit-vba\/","title":{"rendered":"E-Rechnung mit VBA"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"215\" class=\"elementor elementor-215\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0bdb734 e-flex e-con-boxed e-con e-parent\" data-id=\"0bdb734\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-28191f5 elementor-widget elementor-widget-heading\" data-id=\"28191f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">E-Rechnung<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-347641b e-flex e-con-boxed e-con e-parent\" data-id=\"347641b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eb336c2 elementor-widget elementor-widget-heading\" data-id=\"eb336c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">XRechnung als CII oder UBL sowie ZUGFeRD bzw. FacturX<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4391ed3 e-flex e-con-boxed e-con e-parent\" data-id=\"4391ed3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a1ac0cc elementor-widget elementor-widget-text-editor\" data-id=\"a1ac0cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\"><span class=\"BxUVEf ILfuVd\" lang=\"de\"><span class=\"hgKElc\"><b>Ab dem 1. Januar 2025 gilt die grunds\u00e4tzliche Verpflichtung zwischen inl\u00e4ndischen Unternehmern zur Ausstellung (Versand) einer elektronischen Rechnung<\/b>.<\/span><\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-36b9bfa e-flex e-con-boxed e-con e-parent\" data-id=\"36b9bfa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-043a986 elementor-widget elementor-widget-text-editor\" data-id=\"043a986\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Viele VBA Entwickler fragen sich nun, was zu tun ist. Ja, entweder das Rad neu erfinden oder diesen Artikel lesen \ud83d\ude42<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-77035b9 e-flex e-con-boxed e-con e-parent\" data-id=\"77035b9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-08fbe90 elementor-widget elementor-widget-text-editor\" data-id=\"08fbe90\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: left;\">Der \u00f6ffentliche Dienst verlangt von seinen Lieferanten ja schon ziemlich lange E-Rechnungen. Am Anfang ZUGFeRD danach XRechnung.<\/p><p style=\"text-align: left;\">Ab 2025 soll der Standard E-Rechnung auch f\u00fcr den B2B-Bereich verpflichtend werden. Die genaue Umsetzung ist derzeit aber noch Unklarheit. Ziemlich sicher l\u00e4sst sich allerdings sagen, dass die E-Rechnung\u00a0 das Rechnungsformat der Zukunft werden wird.<\/p><p style=\"text-align: left;\">Keiner von uns wird im B2B-Bereich um diese neuen Rechnungen herum kommen. Das bedeutet aber auch, dass wir keine Rechnung ablehnen k\u00f6nnen nur weil wir sie nicht lesen k\u00f6nnen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-060a5eb e-flex e-con-boxed e-con e-parent\" data-id=\"060a5eb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b7e3e45 elementor-widget elementor-widget-text-editor\" data-id=\"b7e3e45\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Grund f\u00fcr all das ist das Wachstumschancengesetz. Also genauer gesagt das &#8222;Gesetz zur St\u00e4rkung von Wachstumschancen, Investitionen<br \/>und Innovation sowie Steuervereinfachung und Steuerfairness&#8220; aus dem Bundesgesetzblatt vom 27.03.2024.<\/p><p>Hier wird im Artikel 23 &#8222;Weitere \u00c4nderung des Umsatzsteuergesetzes&#8220; die E-Rechnung definiert und auch die Ausnahmen geregelt.<\/p><h3><strong>Ausnahmen?\u00a0<\/strong><\/h3><p>Ja, es gibt Ausnahmen! z.B. Wenn K\u00e4ufer oder Verk\u00e4ufer kein Unternehmer ist oder einer von beiden nicht im Inland sitzt. Auch wenn der Bruttorechnungsbetrag 250,00\u20ac nicht \u00fcbersteigt oder es sich beim Artikel um einen Fahrschein handelt gibt es keine E-Rechnungspflicht. Auch nach \u00a74 Nr. 8-29 UStG steuerbefreite Unternehmer haben keine E-Rechnungspflicht.\u00a0<\/p><p>Es gibt allerdings keine Papierrechnungspflicht! Wenn z.B. der Schornsteinfeger an meine Firmenadresse eine E-Rechnung schreibt muss ich, als Unternehmer, diese annehmen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-96d8d3b e-flex e-con-boxed e-con e-parent\" data-id=\"96d8d3b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a62551f elementor-widget elementor-widget-text-editor\" data-id=\"a62551f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>\u00dcbergangsregelungen\u00a0<\/h3><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); text-align: var(--text-align); font-size: 18px;\">Ja, kein Gesetz ohne \u00dcbergangsregelungen \ud83d\ude42 Bis einschlie\u00dflich 31.12.2026 d\u00fcrfen Papierrechnungen verschickt werden. Auch PDF oder sonstige nicht E-Rechnungsformate d\u00fcrfen mit Einwilligung des Empf\u00e4ngers versendet werden. Ab 01.01.2027 d\u00fcrfen nur noch Unternehmen mit weniger als 800.000\u20ac Vorjahresumsatz Papier- oder PDF-Rechnungen versenden. Ab 01.01.2028 gibt es keine \u00dcbergangsregelungen mehr. Da wir hier aber in Deutschland sind schreibe ich sicherheitshalber dazu, dass das eine Aussage\u00a0 mit Stand 01.11.2024 ist. Aus der Vergangenheit haben wir ja gelernt, dass sich da ganz schnell etwas \u00e4ndern kann.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ae579ae e-flex e-con-boxed e-con e-parent\" data-id=\"ae579ae\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c595954 elementor-widget elementor-widget-text-editor\" data-id=\"c595954\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Was sind nun also E-Rechnungen?<\/h3><p>Es gibt ZUGFeRD (neuerdings auch Factur-X genannt) als hybrides Format und die XRechnung in den Auspr\u00e4gungen UBL (Universal Business Language) und CII (Cross Industry Invoice) als reine elektronische Rechnung. <strong>Reine PDF-Dateien sind zwar elektronische Dokumente und vielleicht auch Rechnungen, aber eben keine E-Rechnung im Sinne des Wachstumschancengesetzes.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e8068e6 e-flex e-con-boxed e-con e-parent\" data-id=\"e8068e6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-350929a elementor-widget elementor-widget-text-editor\" data-id=\"350929a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>ZUGFeRD<\/h3><p>ist ein branchen\u00fcbergreifendes Datenformat f\u00fcr den elektronischen Rechnungsdatenaustausch, das vom Forum elektronische Rechnung Deutschland (FeRD) \u2013 mit Unterst\u00fctzung des Bundesministeriums f\u00fcr Wirtschaft und Energie \u2013 erarbeitet wurde. Das ZUGFeRD-Datenformat basiert auf der Richtlinie 2014\/55\/EU vom 16. April 2014 \u00fcber die elektronische Rechnungsstellung bei \u00f6ffentlichen Auftr\u00e4gen und auf der am 28. Juni 2017 ver\u00f6ffentlichten Norm EN16931. Zudem werden die Cross-Industry-Invoice (CII) von UN\/CEFACT und die ISO-Norm 19005-3:2012 (PDF\/A-3) ab ZUGFeRD 2.0 ber\u00fccksichtigt. (Quelle: <a href=\"https:\/\/www.ferd-net.de\/standards\/was-ist-zugferd\/was-ist-zugferd.html\">https:\/\/www.ferd-net.de\/standards\/was-ist-zugferd\/was-ist-zugferd.html<\/a>)<\/p><p>Es handelt sich hier um ein PDF-A3 Dokument, welches eine eingebettete XRechnung im Format CII enth\u00e4lt. Na Super! Das kann also jeder Mensch lesen, kommt elektronisch und man kann es sofort ohne Scanner abspeichern. Dazu kommt noch, dass es ein anerkanntes E-Rechnungsformat ist.<\/p><p>Ja, damit k\u00f6nnte unsere Entscheidung schon fest stehen \ud83d\ude42 Leider gibt es da einen kleinen Hacken. Wie bekomme ich das XML in das PDF? Dazu sp\u00e4ter mehr im Beitrag.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f48ca4d e-flex e-con-boxed e-con e-parent\" data-id=\"f48ca4d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8c58a00 elementor-widget elementor-widget-text-editor\" data-id=\"8c58a00\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>XRechnung<\/h3><p>hierbei handelt es sich um eine strukturierte XML Datei. Sie hat allerdings keinen Platz f\u00fcr ein Firmenlogo, Design, individuelle Schriften oder gar fett gedruckte rote Hinweise auf die neue Kontoverbindung. Daf\u00fcr k\u00f6nnen wir das XML allerdings recht einfach in fast jeder Programmiersprache erstellen.<\/p><p>Die XRechnung k\u00f6nnen wir im CII (Cross Industry Invoice) oder\u00a0<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); text-align: var(--text-align);\">UBL (Universal Business Language) Schema erstellen. Es gibt hier keine Vorschrift welches Schema man verwenden muss. Wenn wir unser XML Dokument allerdings in ein ZUGFeRD-Dokument verpacken wollen sollte es CII sein.\u00a0<\/span><\/p><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); text-align: var(--text-align);\">Wo ist nun der Unterschied?<\/span><\/p><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); text-align: var(--text-align);\">Es ist die Struktur. Da im Namen von CII schon das Wort Invoice (Rechnung) auftaucht kann man wohl davon ausgehen, dass man damit nur Rechnungen schreiben kann. OK es gehen nat\u00fcrlich auch Gutschriften und Stornorechnungen. UBL hingegen ist f\u00fcr alle gesch\u00e4ftlichen Prozesse erstellt worden. Hier kann man also auch Lieferscheine, Arbeitszeitnachweise und \u00c4hnliches erstellen.\u00a0<\/span><\/p><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight ); text-align: var(--text-align);\">Auch im Aufbau erscheint mir UBL sehr viel logischer als CII. UBL ist z.B. in vielen Bl\u00f6cken organisiert aber daf\u00fcr nicht so tief verschachtelt wie CII.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4fa62a3 e-grid e-con-boxed e-con e-parent\" data-id=\"4fa62a3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e6babe6 elementor-widget elementor-widget-image\" data-id=\"e6babe6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_rechnung.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ubl_rechnung\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjM2LCJ1cmwiOiJodHRwczpcL1wvd3d3LmV1ZGF0YWJhc2UuZGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzExXC91YmxfcmVjaG51bmcuanBnIn0%3D\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"652\" src=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_rechnung-1024x652.jpg\" class=\"attachment-large size-large wp-image-236\" alt=\"\" srcset=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_rechnung-1024x652.jpg 1024w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_rechnung-300x191.jpg 300w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_rechnung-768x489.jpg 768w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_rechnung.jpg 1507w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">UBL Hauptstruktur<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b05d8cb elementor-widget elementor-widget-image\" data-id=\"b05d8cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/cii_rechnung.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"cii_rechnung\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjM1LCJ1cmwiOiJodHRwczpcL1wvd3d3LmV1ZGF0YWJhc2UuZGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzExXC9jaWlfcmVjaG51bmcuanBnIn0%3D\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"226\" src=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/cii_rechnung-1024x226.jpg\" class=\"attachment-large size-large wp-image-235\" alt=\"\" srcset=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/cii_rechnung-1024x226.jpg 1024w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/cii_rechnung-300x66.jpg 300w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/cii_rechnung-768x169.jpg 768w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/cii_rechnung.jpg 1511w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">CII Hauptstruktur<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aa50943 e-flex e-con-boxed e-con e-parent\" data-id=\"aa50943\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f298bda elementor-widget elementor-widget-text-editor\" data-id=\"f298bda\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Hier muss sich also jeder selbst die Karten legen und sich letztendlich f\u00fcr beide Formate entscheiden \ud83d\ude42<\/p><p style=\"text-align: center;\">F\u00fcr Beide &#8211; warum das denn? Ganz einfach: Du kannst Deinem Lieferanten nicht vorschreiben welches der beiden Formate er Dir schickt.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-284cf6e e-flex e-con-boxed e-con e-parent\" data-id=\"284cf6e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-63814b7 elementor-widget elementor-widget-text-editor\" data-id=\"63814b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Schon vergessen? Wir m\u00fcssen die Dinger auch noch lesen k\u00f6nnen und zwar alle 3. Zum erstellen meiner Rechnungen habe ich mich vor langer Zeit f\u00fcr ZUGFeRd und dann f\u00fcr XRechnung UBL entschieden. Warum? Nun ja ich arbeite f\u00fcr Staatsunternehmen, kleinere Unternehmen und Privatpersonen. 2017 wollte die DB alle Rechnungen sofort im ZUGFeRD Format. Damals noch ZUGFeRD 1.0 mit CID Schema. Ungef\u00e4hr im Jahr 2020 wurde es dann XRechnung. Da es damals nur Vorlagen im UBL-Format gab war auch hier die Entscheidung leicht. Heute m\u00fcsste man die Entscheidung eigentlich bereuen, weil ZUGFeRD ja nun auch auf CII umgestellt hat. Die ZUGFeRD Rechnungen sende ich \u00fcbrigens an alle Kunden die mich nicht gebeten haben XRechnungen zu stellen. Ach ja ich mache das Alles in VBA!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b5df5d1 e-flex e-con-boxed e-con e-parent\" data-id=\"b5df5d1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a1548e1 elementor-widget elementor-widget-heading\" data-id=\"a1548e1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">E-Rechnung in VBA<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dea7a50 elementor-widget elementor-widget-text-editor\" data-id=\"dea7a50\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>VBA ist ein tolles Werkzeug auch wenn es etwas Microsoft lastig ist. XML Dateien kann VBA allerdings von Hause aus nicht verarbeiten. Das Sch\u00f6ne ist, eine XML Datei ist ja nur eine einfache Textdatei. Die k\u00f6nnen wir mit VBA lesen und schreiben.<\/p><p>z.B. mit so einer Funktion:<\/p><pre>Function ReadFile(strFilePath As String) As String<br \/>On Error GoTo ErrHandler<br \/>Dim myFSO As Object<br \/>Dim myFSOTs As Object<br \/>Dim DataLine As String, tmpCtr As Integer<br \/>Dim Data As String, xml As Boolean<\/pre><p>\u00a0 \u00a0 Set myFSO = CreateObject(&#8222;scripting.FileSystemObject&#8220;)<br \/>\u00a0 \u00a0 Set myFSOTs = myFSO.OpenTextFile(strFilePath, 1)<\/p><p>\u00a0 \u00a0 Do Until myFSOTs.AtEndOfStream<br \/>\u00a0 \u00a0 \u00a0 \u00a0 DataLine = myFSOTs.readline<br \/>\u00a0 \u00a0 \u00a0 \u00a0 If InStr(1, DataLine, &#8222;&lt;?xml&#8220;) &gt; 0 Then xml = True<br \/>\u00a0 \u00a0 \u00a0 \u00a0 If xml Then Data = Data &amp; DataLine<br \/>\u00a0 \u00a0 Loop<\/p><p>\u00a0 \u00a0 ReadFile = Data<\/p><p>errExit:<br \/>\u00a0 \u00a0 Exit Function<br \/>ErrHandler:<br \/>\u00a0 \u00a0 MsgBox Err.Number &amp; vbCrLf &amp; Err.Description<br \/>\u00a0 \u00a0 Resume errExit<br \/>End Function<\/p><p>Ich habe hier schon den oberen Teil des Files abgeschnitten, der nicht zum XML geh\u00f6rt, weil ich die Funktion nutze um das XML aus einer ZUGFeRD Rechnung zu extrahieren.<\/p><p>Das geht dann etwa so:<\/p><pre>\u00a0 Dim strStream As String<br \/>\u00a0 strStream = Mid(strStream,\u00a0 \u00a0InStr(1, strStream, \"&lt;?xml\"))<br \/>\u00a0 If InStr(1, strStream, \"&lt;\/rsm:CrossIndustryDocument&gt;\") &gt; 0 Then<br \/>\u00a0 \u00a0 \u00a0 strStream = Mid(strStream, 1, InStr(1, strStream, \"&lt;\/rsm:CrossIndustryDocument&gt;\") + 27)<br \/>\u00a0 Else<br \/>\u00a0 \u00a0 \u00a0 strStream = Mid(strStream, 1, InStr(1, strStream, \"&lt;\/rsm:CrossIndustryInvoice&gt;\") + 26)<br \/>\u00a0 End If<\/pre><p>Die zwei unterschiedlichen Endtags verraten mir auch ob es ein CII oder CID Dokument ist. CID wird \u00fcbrigens nur noch von veralteten Rechnungssystemen benutzt und ist gem\u00e4\u00df Wachstumschancengesetzt kein g\u00fcltiges E-Rechnungsformat mehr.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-47da994 e-flex e-con-boxed e-con e-parent\" data-id=\"47da994\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0308707 elementor-widget elementor-widget-text-editor\" data-id=\"0308707\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Nachdem wir nun die Dateien gelesen haben k\u00f6nnen wir die einzelnen Knotenpunkte suchen, in denen sich unsere Rechnungsinformationen befinden bzw. unsere Informationen in diese Knoten schreiben. Aber wo sind diese Knoten? Wie in den beiden Bildern oben zu sehen ist leider nicht an den selben Stellen. Wir m\u00fcssen also unterscheiden welchen Typ von E-Rechnung wir vor uns haben oder welchen wir erstellen wollen. Schauen wir uns das mal am Beispiel von UBL an:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-79319e7 e-flex e-con-boxed e-con e-parent\" data-id=\"79319e7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e9a87d4 elementor-widget elementor-widget-image\" data-id=\"e9a87d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_gesamtabbild.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"ubl_gesamtabbild\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQ1LCJ1cmwiOiJodHRwczpcL1wvd3d3LmV1ZGF0YWJhc2UuZGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzExXC91YmxfZ2VzYW10YWJiaWxkLmpwZyJ9\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"807\" height=\"1024\" src=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_gesamtabbild-807x1024.jpg\" class=\"attachment-large size-large wp-image-245\" alt=\"\" srcset=\"https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_gesamtabbild-807x1024.jpg 807w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_gesamtabbild-236x300.jpg 236w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_gesamtabbild-768x975.jpg 768w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_gesamtabbild-1210x1536.jpg 1210w, https:\/\/www.eudatabase.de\/wp-content\/uploads\/2024\/11\/ubl_gesamtabbild.jpg 1295w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d8cd56d e-flex e-con-boxed e-con e-parent\" data-id=\"d8cd56d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-358919a elementor-widget elementor-widget-text-editor\" data-id=\"358919a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Das ist schon richtig heftig \ud83d\ude42 Dieses Bild stammt aus der Spezifikation XRechnung die ihr unter <a href=\"https:\/\/xeinkauf.de\/app\/uploads\/2024\/07\/302-XRechnung-2024-06-20.pdf\">https:\/\/xeinkauf.de\/app\/uploads\/2024\/07\/302-XRechnung-2024-06-20.pdf<\/a> findet. Dort k\u00f6nnt ihr auch genau sehen was wohin geh\u00f6rt und welches Format es haben sollte.<\/p><p>Auch f\u00fcr CII gibt es so ein Modell. Ich habe aber kein solches Komplettbild finden k\u00f6nnen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2d46a31 e-flex e-con-boxed e-con e-parent\" data-id=\"2d46a31\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c5a63fa elementor-widget elementor-widget-text-editor\" data-id=\"c5a63fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Jetzt k\u00f6nnen wir uns eien Klasse schreiben, mit der wirXML Knoten lesen und schreiben k\u00f6nnen, oder einfach die Strings mit:<\/p><pre>strXML = \"&lt;invoice&gt;12345&lt;\/invoice&gt;\"<\/pre><p>zusammen bauen. Wir k\u00f6nnen nat\u00fcrlich auch die von Microsoft bereitgestellte MSXML2 Library nutzten. Dazu legen wir einen Verweis auf die Microsoft XML, v6.0 an. In einer neuen Klasse w\u00fcrde das dann etwa so aussehen:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-af4e3c8 e-flex e-con-boxed e-con e-parent\" data-id=\"af4e3c8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a7d5d3 elementor-widget elementor-widget-text-editor\" data-id=\"1a7d5d3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Option Explicit<\/p><p>Private xmlDoc As Object &#8218;MSXML2.DOMDocument60<br \/>Private root As Object &#8218;Der Wurzelknoten der XRechnung<\/p><pre>Private Sub Class_Initialize()\n  Set xmlDoc = CreateObject(\"MSXML2.DOMDocument.6.0\")\n  Set root = xmlDoc.createElement(\"ubl:Invoice\")\n\n  'Namespace-Definitionen hinzuf\u00fcgen\n  root.setAttribute \"xmlns:ubl\", \"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\"  \n  root.setAttribute \"xmlns:cac\", \"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2\"\n  root.setAttribute \"xmlns:cbc\", \"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\"\n  root.setAttribute \"xmlns:xsi\", \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n  root.setAttribute \"xsi:schemaLocation\", \"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 http:\/\/docs.oasis-open.org\/ubl\/os-UBL-2.1\/xsd\/maindoc\/UBL-Invoice-2.1.xsd\"\n\n  xmlDoc.appendChild root\n\n  Dim invoiceElement As Object\n  Set invoiceElement = xmlDoc.createElement(\"cbc:CustomizationID\")\n  invoiceElement.Text = \"urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0\"\n  root.appendChild invoiceElement\n\n  Set invoiceElement = xmlDoc.createElement(\"cbc:ProfileID\")\n  invoiceElement.Text = \"urn:fdc:peppol.eu:2017:poacc:billing:01:1.0\"\n  root.appendChild invoiceElement\n\nEnd Sub<\/pre>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e525e8e e-flex e-con-boxed e-con e-parent\" data-id=\"e525e8e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-81d282f elementor-widget elementor-widget-text-editor\" data-id=\"81d282f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Mit diesem Wurzelknoten haben wir das komplette Ger\u00fcst der UBL XRechnung erstellt. Jetzt m\u00fcssen noch alle anderen Informationen an den root-Knoten gebunden werden. Dazu geh\u00f6ren Rechnungsnummer<\/p><pre>Set invoiceElement = xmlDoc.createElement(\"cbc:ID\")<br \/>invoiceElement.Text = InvoiceInfo.Number<br \/>root.appendChild invoiceElement<\/pre><p>, das Rechnungsdatum<\/p><pre>Set invoiceElement = xmlDoc.createElement(\"cbc:IssueDate\")<br \/>invoiceElement.Text = InvoiceInfo.Date<br \/>root.appendChild invoiceElement<\/pre><p>und vieles mehr (s. Bild oben hier die ersten zwei Elemente links unter Invoice).\u00a0\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ec565fe e-flex e-con-boxed e-con e-parent\" data-id=\"ec565fe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e628e99 elementor-widget elementor-widget-text-editor\" data-id=\"e628e99\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Genau so wie das erstellen der XML-Datei funktioniert auch das Lesen der Datei. Wenn ihr eine XML Datei habet k\u00f6nnt ihr die Datei direkt mit\u00a0<\/p><pre>Set xmlDoc = CreateObject(\"MSXML2.DOMDocument\")<br \/>xmlDoc.Load xmlFile<\/pre><p>einlesen oder wenn ihr ein PDF habt eben mit der oben beschriebenen Funktion das XML extrahieren und mit diesem Befehl dem xmlDoc zur Verf\u00fcgung stellen:<\/p><pre>Set xmlDoc = CreateObject(\"MSXML2.DOMDocument\")<br \/>xmlDoc.loadXML strStream<\/pre><p>Danach z.B. mit<\/p><pre>Set xmlNode = xmlDoc.selectSingleNode(\"\/\/cbc:ID\")<br \/>If Not xmlNode Is Nothing Then strRANR = xmlNode.Text<\/pre><p>die Rechnungsnummer auslesen und ggf. in einer Tabelle speichern.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2b7f9bf e-flex e-con-boxed e-con e-parent\" data-id=\"2b7f9bf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7bcd360 elementor-widget elementor-widget-text-editor\" data-id=\"7bcd360\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Wer bis hier hin gelesen hat kann sich nun sicherlich den Aufwand vorstellen eine komplette Klasse f\u00fcr mindestens ein E-Rechnungsformat zu schreiben und dazu noch zwei Routinen um CII und UBL lesen zu k\u00f6nnen. Vermutlich habt ihr es euch schon\u00a0 gedacht &#8211; ich habe mir diese Arbeit bereits gemacht. Es w\u00e4re also unfair euch nicht ein komplettes Werkzeug zum schreiben, lesen und verarbeiten an die Hand zu geben. Wer eine Access (32Bit) Demo mit der Ihr Rechnungen erstellen und einlesen k\u00f6nnt haben m\u00f6chte f\u00fcllt bitte das Formular aus:<\/p><style id=\"wpforms-css-vars-278\">\n\t\t\t\t#wpforms-278 {\n\t\t\t\t--wpforms-container-padding: 0px;\n--wpforms-container-border-width: 1px;\n--wpforms-container-border-radius: 3px;\n--wpforms-background-color: rgba(0, 0, 0, 0);\n--wpforms-field-size-input-height: 43px;\n--wpforms-field-size-input-spacing: 15px;\n--wpforms-field-size-font-size: 16px;\n--wpforms-field-size-line-height: 19px;\n--wpforms-field-size-padding-h: 14px;\n--wpforms-field-size-checkbox-size: 16px;\n--wpforms-field-size-sublabel-spacing: 5px;\n--wpforms-field-size-icon-size: 1;\n--wpforms-label-size-font-size: 16px;\n--wpforms-label-size-line-height: 19px;\n--wpforms-label-size-sublabel-font-size: 14px;\n--wpforms-label-size-sublabel-line-height: 17px;\n--wpforms-button-size-font-size: 17px;\n--wpforms-button-size-height: 41px;\n--wpforms-button-size-padding-h: 15px;\n--wpforms-button-size-margin-top: 10px;\n--wpforms-container-shadow-size-box-shadow: none;\n\t\t\t}\n\t\t\t<\/style><div class=\"wpforms-container wpforms-container-full wpforms-render-modern\" id=\"wpforms-278\"><form id=\"wpforms-form-278\" class=\"wpforms-validate wpforms-form\" data-formid=\"278\" method=\"post\" enctype=\"multipart\/form-data\" action=\"\/index.php\/wp-json\/wp\/v2\/pages\/215\" data-token=\"2ce217b6f6c61bd04e7bfbd627fa3c3b\" data-token-time=\"1777599543\"><noscript class=\"wpforms-error-noscript\">Bitte aktiviere JavaScript in deinem Browser, um dieses Formular fertigzustellen.<\/noscript><div id=\"wpforms-error-noscript\" style=\"display: none;\">Bitte aktiviere JavaScript in deinem Browser, um dieses Formular fertigzustellen.<\/div><div class=\"wpforms-field-container\">\t\t<div id=\"wpforms-278-field_3-container\"\n\t\t\tclass=\"wpforms-field wpforms-field-text\"\n\t\t\tdata-field-type=\"text\"\n\t\t\tdata-field-id=\"3\"\n\t\t\t>\n\t\t\t<label class=\"wpforms-field-label\" for=\"wpforms-278-field_3\" >Name Email<\/label>\n\t\t\t<input type=\"text\" id=\"wpforms-278-field_3\" class=\"wpforms-field-medium\" name=\"wpforms[fields][3]\" >\n\t\t<\/div>\n\t\t<div id=\"wpforms-278-field_1-container\" class=\"wpforms-field wpforms-field-name\" data-field-id=\"1\"><fieldset><legend class=\"wpforms-field-label\">Name <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/legend><div class=\"wpforms-field-row wpforms-field-medium\"><div class=\"wpforms-field-row-block wpforms-first wpforms-one-half\"><input type=\"text\" id=\"wpforms-278-field_1\" class=\"wpforms-field-name-first wpforms-field-required\" name=\"wpforms[fields][1][first]\" aria-errormessage=\"wpforms-278-field_1-error\" required><label for=\"wpforms-278-field_1\" class=\"wpforms-field-sublabel after\">Vorname<\/label><\/div><div class=\"wpforms-field-row-block wpforms-one-half\"><input type=\"text\" id=\"wpforms-278-field_1-last\" class=\"wpforms-field-name-last wpforms-field-required\" name=\"wpforms[fields][1][last]\" aria-errormessage=\"wpforms-278-field_1-last-error\" required><label for=\"wpforms-278-field_1-last\" class=\"wpforms-field-sublabel after\">Nachname<\/label><\/div><\/div><\/fieldset><\/div><div id=\"wpforms-278-field_2-container\" class=\"wpforms-field wpforms-field-email\" data-field-id=\"2\"><label class=\"wpforms-field-label\" for=\"wpforms-278-field_2\">Email <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"email\" id=\"wpforms-278-field_2\" class=\"wpforms-field-medium wpforms-field-required\" name=\"wpforms[fields][2]\" spellcheck=\"false\" aria-errormessage=\"wpforms-278-field_2-error\" required><\/div><script>\n\t\t\t\t( function() {\n\t\t\t\t\tconst style = document.createElement( 'style' );\n\t\t\t\t\tstyle.appendChild( document.createTextNode( '#wpforms-278-field_3-container { position: absolute !important; overflow: hidden !important; display: inline !important; height: 1px !important; width: 1px !important; z-index: -1000 !important; padding: 0 !important; } #wpforms-278-field_3-container input { visibility: hidden; } #wpforms-conversational-form-page #wpforms-278-field_3-container label { counter-increment: none; }' ) );\n\t\t\t\t\tdocument.head.appendChild( style );\n\t\t\t\t\tdocument.currentScript?.remove();\n\t\t\t\t} )();\n\t\t\t<\/script><\/div><!-- .wpforms-field-container --><div class=\"wpforms-recaptcha-container wpforms-is-recaptcha wpforms-is-recaptcha-type-v3\" ><input type=\"hidden\" name=\"wpforms[recaptcha]\" value=\"\"><\/div><div class=\"wpforms-submit-container\" ><input type=\"hidden\" name=\"wpforms[id]\" value=\"278\"><input type=\"hidden\" name=\"page_title\" value=\"\"><input type=\"hidden\" name=\"page_url\" value=\"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/pages\/215\"><input type=\"hidden\" name=\"url_referer\" value=\"\"><button type=\"submit\" name=\"wpforms[submit]\" id=\"wpforms-submit-278\" class=\"wpforms-submit\" data-alt-text=\"Download ...\" data-submit-text=\"Download Anfordern\" aria-live=\"assertive\" value=\"wpforms-submit\">Download Anfordern<\/button><\/div><\/form><\/div>  <!-- .wpforms-container --><p>Eine 64-Bit Version stelle ich auf Anfrage gerne zur Verf\u00fcgung.\u00a0<\/p><p>F\u00fcr den offenen Quellcode w\u00fcrde ich um einen Betrag von 250\u20ac zzgl, MwSt. (297,50\u20ac brutto) bitten, f\u00fcr den ihr nat\u00fcrlich eine Factur-X Rechnung bekommt \ud83d\ude42<\/p><p>\u00dcbrigens die MFB Klassen und Module sind auch Excel geeignet. Getestet in einem XLSM unter Excel 2016.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5aa6ea1 e-flex e-con-boxed e-con e-parent\" data-id=\"5aa6ea1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e3ac4b8 elementor-widget elementor-widget-heading\" data-id=\"e3ac4b8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Factur-X oder ZUGFeRD<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5aced7c e-flex e-con-boxed e-con e-parent\" data-id=\"5aced7c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e7320eb elementor-widget elementor-widget-text-editor\" data-id=\"e7320eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Stimmt ja, da war noch was. Wie bekomme ich den nun eigentlich das XML in das PDF. Meinen schicken Rechnungsbericht habe ich ja schon erstellt und als PDF speichern geht ja z.B. \u00fcber\u00a0<\/p><pre>DoCmd.OutputTo acOutputReport, \"rep_Rechnung\", acFormatPDF, \"RA.pdf\"<\/pre><p>Wir wissen aber, dass das keine E-Rechnung ist und somit nur an Privatpersonen mit deren Einverst\u00e4ndnis gesendet werden darf.<\/p><p>F\u00fcr eine Factur-X Rechnung brauchen wir also nicht nur ein PDF sondern ein PDF mit Anhang. Das hei\u00dft dann PDF\/A. Das A steht f\u00fcr Advanced also erweitert. Nun hat auch hier das Access Team vergessen uns wie in allen anderen Office-Programmen diesen Schalter zur Verf\u00fcgung zu stellen und wir m\u00fcssen unserem PDF-Export das \u00fcber die Registry sagen. Das funktioniert z.B. so:<\/p><pre>Sub PDFA_Setzen()<br \/>On Error Resume Next<br \/>Dim ws As Object<br \/>  Set ws = CreateObject(\"WScript.Shell\")<br \/>  ws.RegWrite \"HKCU\\Software\\MicroSoft\\Office\\\" &amp; Application.Version &amp; \"\\Common\\FixedFormat\\LastISO19005-1\", 1, \"REG_DWORD\"<br \/>  If Err.Number &lt;&gt; 0 Then MsgBox \"Fehler beim Setzen des Registry-Eintrags f\u00fcr die PDF\/A-Kompatibilit\u00e4t!\", vbInformation<br \/>  Set ws = Nothing<br \/>End Sub<\/pre><p>Danach produziert unser Befehl<\/p><pre>DoCmd.OutputTo acOutputReport, \"rep_Rechnung\", acFormatPDF, \"RA.pdf\"<\/pre><p>automatisch ein PDF\/A1 Dokument.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8cacf42 e-flex e-con-boxed e-con e-parent\" data-id=\"8cacf42\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9be313c elementor-widget elementor-widget-text-editor\" data-id=\"9be313c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>F\u00fcr das zusammenf\u00fcgen unseres XML Elements mit dem PDF m\u00fcssen wir das XML noch als speichern. z.B. mit dem Befehl\u00a0<\/p><pre>xmlDoc.Save \"RA.xml\"<\/pre><p>Da wir in Access leider auch keine M\u00f6glichkeit haben die beiden Dateien nun zusammen zu f\u00fcgen brauchen wir ein weiteres Werkzeug. Ich habe jahrelang das bis 100 pro Tag freie Kommandozeilentool von intarsys benutzt und wollte das eigentlich hier verlinken. Darf ich aber nicht, weil in den Lizenzbedingungen steht ihr m\u00fcsst es von deren Seite runterladen. Da ist es aber nicht mehr aufzufinden. Es gibt aber ein\u00a0 Projekt namens Mustang. Die haben in Java eine Bibliothek geschrieben, die man per Kommandozeile aufrufen kann. Diese Bibliothek habe ich mit Launch4J in eine EXE Datei gekapselt. Damit k\u00f6nne wir ohne aufwendige Installation einfach per Shell Befehl die EXE aufrufen. Einfach das ZIP-File irgendwo hin extrahieren und z.B. so aufrufen:<\/p><pre>Shell \"mustang.exe --disable-file-logging\u00a0--action combine -source \"\"RA.pdf\"\" -source-xml \"\"RA.xml\"\" -out \"\"RA_A3.pdf\"\"\"<\/pre><p>Das Output-Element ist dann eine Factur-X oder ZUGFeRD Rechnung die ihr sowohl an Privatpersonen als auch an Firmen senden k\u00f6nnt. <a href=\"https:\/\/www.eudatabase.de\/Mustang.zip\">Download Mustang.zip (264 MB)<\/a><\/p><p>Wem das zu viel ist hier die &#8222;abgespeckte&#8220; Variante in C#.Net 6.0 mit der ihr ZUGFeRD Rechnungen erstellen und das XML extrahieren k\u00f6nnt. Ebenfalls basierend auf dem Mustang-Projekt. <a href=\"https:\/\/www.eudatabase.de\/MFBZUGFeRD.zip\">Download MFB_ZUGFeRD (19MB)<\/a><\/p><pre>Die Aufrufe hier:<\/pre><p>MFBZUGFeRD.exe action:combine sourcePDF:&#8220;C:\\Meine PDFs\\Rechnung.pdf&#8220; sourceXML:&#8220;C:\\Meine XMLs\\Rechnung.xml&#8220; output:&#8220;C:\\Meine Rechnungen\\Rechnung.pdf&#8220;<br \/>MFBZUGFeRD.exe action:extract sourcePDF:&#8220;C:\\Meine PDFs\\Rechnung.pdf&#8220; output:&#8220;C:\\Meine XMLs\\Rechnung.xml&#8220;<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c95f54a e-flex e-con-boxed e-con e-parent\" data-id=\"c95f54a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3bab46c elementor-widget elementor-widget-text-editor\" data-id=\"3bab46c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>So nun viel Spa\u00df mit eurem neuen Wissen. Bei Fragen oder Anregungen k\u00f6nnt ihr mir gerne mailen unter <a href=\"mailto:fried@eudatabase.de\">fried@eudatabase.de<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>E-Rechnung XRechnung als CII oder UBL sowie ZUGFeRD bzw. FacturX Ab dem 1. Januar 2025 gilt die grunds\u00e4tzliche Verpflichtung zwischen inl\u00e4ndischen Unternehmern zur Ausstellung (Versand) einer elektronischen Rechnung. Viele VBA Entwickler fragen sich nun, was zu tun ist. Ja, entweder das Rad neu erfinden oder diesen Artikel lesen \ud83d\ude42 Der \u00f6ffentliche Dienst verlangt von seinen&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-215","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/pages\/215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/comments?post=215"}],"version-history":[{"count":64,"href":"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/pages\/215\/revisions"}],"predecessor-version":[{"id":312,"href":"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/pages\/215\/revisions\/312"}],"wp:attachment":[{"href":"https:\/\/www.eudatabase.de\/index.php\/wp-json\/wp\/v2\/media?parent=215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}