{"id":55000508,"date":"2007-10-01T00:00:00","date_gmt":"2021-02-11T21:18:21","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=508"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Berichte_als_PDF_per_Mail_verschicken","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/","title":{"rendered":"Berichte als PDF per Mail verschicken"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg03.met.vgwort.de\/na\/8f31e27ef76f48478709cf03eef099e3\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Sie haben eine Anwendung, die Berichte mit Rechnungen oder &auml;hnlichen Daten enth&auml;lt, und m&ouml;chten diese m&ouml;glichst in einem Rutsch als PDF-Dokument in einer E-Mail verschicken Kein Problem: Die Werkzeuge daf&uuml;r hat Access im Unternehmen in der Vergangenheit schon geliefert. Jetzt geht es an das Zusammenbauen der Einzelteile zur PDF-erzeugenden Bericht-Per-Mail-Verschickungsmaschine.<\/b><\/p>\n<\/div>\n<div class=\"story\">\n<p>Jeder, der seine Kunden und Bestellungen in einer Access-Datenbank verwaltet, hegt fr&uuml;her oder sp&auml;ter den Wunsch, Rechnungen und sonstigen kundenbezogenen Schriftverkehr automatisiert erledigen zu lassen. Klassischerweise h&auml;lt daf&uuml;r ein Bericht her, der ausgedruckt, einget&uuml;tet und mit der Schneckenpost verschickt wird. Manch einer schickt die Daten auch zuvor noch nach Word, um diese von der Sachbearbeiterin nachbearbeiten zu lassen.<\/p>\n<p>In letzter Zeit l&ouml;st aber die E-Mail den Versand per Post ab: Dabei wird die Rechnung im PDF-Format gespeichert, an die E-Mail angeh&auml;ngt und mit dieser verschickt. Damit entfallen sowohl einige Kosten f&uuml;rs Material als auch der Zeitaufwand f&uuml;r das Ausdrucken und Eint&uuml;ten, geschweige denn die Verz&ouml;gerung durch die postalische Zustellung.<\/p>\n<p>Damit Sie wirklich von dieser gewonnenen Zeit profitieren k&ouml;nnen, m&uuml;ssen die notwendigen Vorg&auml;nge nat&uuml;rlich vollautomatisch ablaufen. Das ist kein Problem: Beitr&auml;ge aus vergangenen Ausgaben von Access im Unternehmen liefern die Basis f&uuml;r das Programmieren einer Anwendung, die Ihre Anschreiben vollautomatisch an die Kunden versendet.<\/p>\n<p>Das Erstellen von PDF-Dokumenten aus Berichten beschreibt der Beitrag <b>Vom Bericht zum PDF-Dokument <\/b>(Shortlink 430). Dort kommt eine von Stephen Lebans bereitgestellte DLL, die nicht registriert werden muss, zum Einsatz.<\/p>\n<p>Das Versenden von E-Mails erl&auml;utert der Beitrag <b>Mail versenden mit SMTP und VBA <\/b>(Shortlink 390). Auch dieser Beitrag stellt eine DLL vor, die Sie kostenlos einsetzen k&ouml;nnen.<\/p>\n<p>Die Techniken sind also vorhanden, fehlt nur noch das Rahmenwerk: Eine Anwendung, die massenhaft Dokumente f&uuml;r unterschiedliche Empf&auml;nger liefert, ist beispielsweise die S&uuml;dsturm-Datenbank (eine ge&auml;nderte Fassung der Nordwind-Datenbank, siehe Shortlink 411). Sie enth&auml;lt neben den Tabellen einen Rechnungsbericht, der dem aus der Original-Nordwind-Datenbank entspricht, aber den Tabellen der S&uuml;dwind-Datenbank angepasst ist (siehe Bild 1).<\/p>\n<div class=\"abbildung\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Der Rechnungen-Bericht aus der Nordwind-Datenbank h&auml;lt als Beispiel f&uuml;r den Rechnungsversand im PDF-Format per E-Mail her.<\/span><\/b><\/p>\n<\/p><\/div>\n<p><b>Voraussetzung: E-Mail-Adresse<\/b><\/p>\n<p>Damit Sie &uuml;berhaupt serienweise Rechnungen per E-Mail versenden k&ouml;nnen, brauchen Sie die passenden E-Mail-Adressen. Diese sollten zusammen mit den &uuml;brigen Kundendaten in einem separaten Feld der Kundentabelle untergebracht sein. Im Beispiel enth&auml;lt so die Tabelle <b>tblKunden <\/b>ein weiteres Feld namens <b>EMail<\/b>.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Zus&auml;tzliche Felder<\/p>\n<p>Wer Rechnungen und sonstige Korrespondenz per E-Mail verschickt, sollte dies genau so festhalten wie den Versand von Waren oder Briefen. Daher enth&auml;lt die Tabelle <b>tblBestellungen <\/b>ein zus&auml;tzliches Feld mit dem Namen <b>Rechnungsdatum <\/b>(siehe Bild 2).<\/p>\n<div class=\"image\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 2: Die Tabelle tblBestellungen enth&auml;lt ein zus&auml;tzliches Feld, das den Zeitpunkt des Rechnungsversands speichert.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Au&szlig;erdem f&uuml;gen Sie der Beispieldatenbank eine weitere Tabelle namens <b>tblRechnungVersenden <\/b>hinzu. Die Tabelle enth&auml;lt lediglich zwei Felder: Das Prim&auml;rschl&uuml;sselfeld dient der Verkn&uuml;pfung mit einem Datensatz der Tabelle <b>tblBestellungen<\/b>, das zweite ist ein <b>Ja\/Nein<\/b>-Feld, das angibt, ob die Rechnung zur aktuellen Bestellung versendet werden soll. Da diese Angabe nur tempor&auml;r ist, soll sie in einer separaten Tabelle gespeichert werden und die Anzahl der Felder der Tabelle <b>tblBestellungen <\/b>nicht unn&ouml;tig erh&ouml;hen. Die Verkn&uuml;pfung der beiden Tabellen entnehmen Sie Bild 3.<\/p>\n<div class=\"image\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 3: Die zus&auml;tzliche Tabelle tblRechnungVersenden liefert ein Feld zum Markieren der zu versendenden Rechnungen.<\/span><\/b><\/p>\n<\/p><\/div>\n<p><b>Rechnungen f&uuml;r den Versand ausw&auml;hlen<\/b><\/p>\n<p>Bevor es ans Eingemachte geht, stellen Sie zun&auml;chst noch ein Formular zusammen, mit dem der Anwender ausw&auml;hlen kann, welche Rechnungen er versenden m&ouml;chte. Dazu verwenden Sie ein Unterformular, das die Rechnungen aus der Abfrage aus Bild 4 anzeigt. Um das Unterformular &uuml;bersichtlich zu halten, soll es nur die Felder <b>BestellungID<\/b>, <b>Bestelldatum<\/b>, <b>Rechnungsdatum <\/b>und das Feld <b>Versenden <\/b>der Tabelle <b>tblRechnungVersenden <\/b>enthalten.<\/p>\n<div class=\"image\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic004_opt.jpeg\" alt=\"pic004.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 4: Diese Abfrage liefert die Daten f&uuml;r die Auswahl der zu versendenden Rechnungen im Unterformular sfmRechnungen.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Das Unterformular selbst betten Sie in ein Hauptformular ein, das die M&ouml;glichkeit bietet, nach noch nicht verschickten Rechnungen zu fahnden oder die aktuell zu verschickenden Rechnungen zu markieren (siehe Bild 5).<\/p>\n<div class=\"image\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic005_opt.jpeg\" alt=\"pic005.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 5: Die Auswahl der zu versendenden Rechnungen erfolgt im Formular <br \/>frmRechnungen per Klick auf das entsprechende Kontrollk&auml;stchen.<\/span><\/b><\/p>\n<\/p><\/div>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Technische Voraussetzungen<\/p>\n<p>Wie bereits erw&auml;hnt, brauchen Sie einige DLLs f&uuml;r den Betrieb dieser L&ouml;sung.<\/p>\n<p>Die <b>vbSendMail.dll <\/b>[1] m&uuml;ssen Sie registrieren. Dies erledigen Sie ganz einfach mit folgender Anweisung, abgesetzt im <b>Ausf&uuml;hren<\/b>-Dialog oder in der Eingabeaufforderung:<\/p>\n<pre>RegSvr32.exe &lt;Pfad&gt;\\vbSendMail.dll<\/pre>\n<p>Nutzer von Windows Vista m&uuml;ssen &uuml;ber die entsprechenden Berechtigungen verf&uuml;gen und installieren DLLs mit demselben Befehl, allerdings in der Administrator-Variante der Eingabeaufforderung, die man mit dem Kontextmen&uuml;eintrag <b>Als Administrator ausf&uuml;hren <\/b>des Men&uuml;punkts <b>Alle Programme\/Zubeh&ouml;r\/Eingabeaufforderung <\/b>&ouml;ffnet.<\/p>\n<p>F&uuml;r den Einsatz der Bibliothek ben&ouml;tigen Sie einen Verweis auf <b>SMTP Send Mail for VB6<\/b> in der Datenbank.<\/p>\n<p>Die beiden f&uuml;r das Erzeugen des PDFs aus einem Bericht erforderlichen DLLs [2] brauchen Sie nicht zu installieren, sondern nur im Verzeichnis der Datenbankanwendung oder im Windows-Systemverzeichnis zu speichern.<\/p>\n<p>Daf&uuml;r m&uuml;ssen Sie aber die beiden Module <b>modReportToPDF <\/b>und <b>clsCommonDialog <\/b>aus der Beispieldatenbank <b>A2000SnapshotToPDFver751<\/b>.<b>mdb<\/b> [2] importieren &#8211; darin ist unter anderem die Funktion zum Erzeugen eines PDF-Dokuments aus einem Bericht enthalten.<\/p>\n<p><b>E-Mail-Daten<\/b><\/p>\n<p>F&uuml;r das Versenden von E-Mails mit der <b>vbSendMail<\/b>-Bibliothek brauchen Sie ein paar Informationen mehr, als wenn Sie dies mit Outlook erledigen. Daf&uuml;r sind Sie aber auch vor l&auml;stigen Sicherheitsr&uuml;ckfragen gefeit.<\/p>\n<p>Zu diesen Informationen geh&ouml;ren unter anderem die Daten des Servers, der die E-Mails verschicken soll, die Absenderinformationen, der Text des Betreffs und der eigentliche Inhalt der E-Mail.<\/p>\n<p>Da sich diese Daten m&ouml;glicherweise mit der Zeit &auml;ndern oder Sie verschiedene E-Mail-Vorlagen erstellen m&ouml;chten, speichern Sie je einen Satz dieser Daten in einer Tabelle namens <b>tblEMails<\/b>, die mit einer weiteren Tabelle namens <b>tblAuthentifizierungsdaten <\/b>verkn&uuml;pft ist. Letztere enth&auml;lt die unterschiedlichen Authentifizierungsmethoden.<\/p>\n<p>Diese Tabelle sieht im Beziehungen-Fenster so wie in Bild 6 aus.<\/p>\n<div class=\"image\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic006_opt.jpeg\" alt=\"pic006.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 6: Diese beiden Tabellen speichern die Vorlagen f&uuml;r verschiedene E-Mails. Auf diese Weise ist das Wechseln etwa des Servers oder einer Absenderadresse kein Problem.<\/span><\/b><\/p>\n<\/p><\/div>\n<p><!--30percent--><\/p>\n<p><b>Die Steuerungszentrale<\/b><\/p>\n<p>Das Formular <b>frmRechnungsversand <\/b>dient nicht nur der Anzeige der in den beiden Tabellen <b>tblEMails <\/b>und <b>tblAuthentifizierungsarten <\/b>gespeicherten Daten, sondern auch als Steuerungszentrale f&uuml;r den E-Mail-Versand (siehe Bild 7).<\/p>\n<div class=\"image\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic007_opt.jpeg\" alt=\"pic007.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 7: <br \/>Das Formular frmRechnungsversand steuert den Versand der Rechnungen und bietet die M&ouml;glichkeit, das Formular frmRechnungen zum Ausw&auml;hlen der zu versendenden Rechnungen anzuzeigen.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Interessant sind die Funktionen dieses Formulars: W&auml;hrend die Felder im oberen Bereich entsprechend den vorliegenden Serverdaten gef&uuml;llt werden m&uuml;ssen, k&ouml;nnen Sie bei den beiden unteren Feldern <b>Betreff<\/b> und <b>Inhalt <\/b>mit Platzhaltern arbeiten. Die enthaltene Technik l&auml;sst sich am besten im Zusammenhang erl&auml;utern:<\/p>\n<p>Zun&auml;chst tr&auml;gt der Benutzer die f&uuml;r den Versand wichtigen Informationen in die daf&uuml;r vorgesehenen Felder ein.<\/p>\n<p>Dann erfolgt die Auswahl der Bestellungen, f&uuml;r die eine Rechnung verschickt werden soll. Diese Auswahl erfolgt im Formular <b>frmRechnungen<\/b>, das der Benutzer durch einen Mausklick auf die Schaltfl&auml;che <b>cmdEmpfaengerAuswaehlen <\/b>&ouml;ffnet. Dies l&ouml;st die folgende Ereignisprozedur aus:<\/p>\n<pre>Private Sub cmdEmpfaengerAuswaehlen_Click()\r\n DoCmd.OpenForm \"frmRechnungen\", _<br \/> WindowMode:=acDialog\r\n Me!txtAnzahlEmpfaenger = _<br \/> DCount(\"BestellungID\", _<br \/> \"qryRechnungenAuswahl\", _<br \/> \"Rechnungsdatum IS NULL AND \" _<br \/> &amp; \"Versenden = True\")\r\nEnd Sub<\/pre>\n<p>Die Routine &ouml;ffnet das Formular <b>frmRechnungen <\/b>als modalen Dialog und aktualisiert anschlie&szlig;end den Inhalt des ungebundenen Textfelds <b>txtAnzahlEmpfaenger <\/b>&#8211; somit gewinnt der Benutzer einen Eindruck vom Umfang des anstehenden Mailversands.<\/p>\n<p>Der anschlie&szlig;ende Klick auf die Schaltfl&auml;che <b>Senden<\/b> l&ouml;st nun die Routine aus Listing 1 aus. Diese erledigt nun zusammengefasst die folgenden Schritte:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Deklaration der Variablen<\/li>\n<li class=\"aufz-hlung\">Erzeugen einer Instanz von <b>vbSendMail.clsSendmail<\/b><\/li>\n<li class=\"aufz-hlung\">Einstellen der grundlegenden E-Mail-Parameter<\/li>\n<li class=\"aufz-hlung\">Erzeugen einer Datensatzgruppe, die alle Datens&auml;tze der Abfrage <b>qryRechnungen <\/b>enth&auml;lt, zu denen noch keine Rechnung versendet wurde (<b>Rechnungsdatum Is Null<\/b>) und die im Formular <b>frmRechnungen <\/b>f&uuml;r den Versand markiert wurden (<b>Versenden = True<\/b>).<\/li>\n<li class=\"aufz-hlung\">Die Datens&auml;tze dieses Recordsets enthalten alle f&uuml;r das Zusammenstellen des Berichts und f&uuml;r die in der E-Mail anzuzeigenden Rechnungsinformationen notwendigen Daten.<\/li>\n<li class=\"aufz-hlung\">Nun durchl&auml;uft die Routine die Datens&auml;tze f&uuml;r alle zu versendenden Rechnungen und erzeugt dabei ein passendes PDF-Dokument, das es in einem Verzeichnis unterhalb des Verzeichnisses der Datenbank speichert. Dieses h&auml;ngt sie an das E-Mail-Objekt an und tr&auml;gt die weiteren, auf den Kunden der aktuellen Bestellung zugeschnittenen pers&ouml;nlichen Daten ein. Schlie&szlig;lich versendet die Routine die E-Mail.<\/li>\n<\/ul>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 1: Das Versenden von Rechnungen im PDF-Format<\/p>\n<pre>Private Sub cmdSenden_Click()\r\n   DoCmd.Hourglass True\r\n   Dim db As DAO.Database\r\n   Dim rst As DAO.Recordset\r\n   Dim intGesendet As Integer\r\n   Dim intNichtGesendet As Integer\r\n   Dim intRechnungen As Integer\r\n   Dim strOrdner As String\r\n   Dim strAttachment As String \r\n   DoCmd.RunCommand acCmdSaveRecord \r\n   Set objMail = New vbSendMail.clsSendMail\r\n   Set db = CurrentDb\r\n   objMail.SMTPHost = Me!SMTPServer\r\n   objMail.SMTPPort = Me.SMTPPort\r\n   objMail.Connect\r\n   Set rst = db.OpenRecordset(\"SELECT DISTINCT * FROM qryRechnungenAuswahl WHERE Rechnungsdatum IS NULL \" _<br \/> &amp; \"AND Versenden = True\", dbOpenDynaset)\r\n   If Not rst.EOF Then\r\n     rst.MoveLast\r\n     rst.MoveFirst\r\n     intRechnungen = rst.RecordCount\r\n     strOrdner = \"Rechnungsversand\"\r\n     On Error Resume Next\r\n     MkDir CurrentProject.path &amp; \"\\\" &amp; strOrdner\r\n     On Error GoTo 0\r\n     Do While Not rst.EOF\r\n       RechnungErstellen rst!BestellungID, strOrdner\r\n       With objMail\r\n         .EncodeType = MIME_ENCODE\r\n         .ContentBase = .GetContentType(CurrentProject.path &amp; \"\\\" &amp; strOrdner &amp; \"\\Abrechnung\" _<br \/> &amp; rst!BestellungID &amp; \".pdf\")\r\n         strAttachment = CurrentProject.path &amp; \"\\\" &amp; strOrdner &amp; \"\\Rechnung_\" &amp; rst!BestellungID &amp; \".pdf\"\r\n         .Attachment = strAttachment\r\n         .from = Me.Von\r\n         If Len(Me.KopieAn) &gt; 0 Then\r\n           .BccRecipient = Me.KopieAn\r\n         End If\r\n         .Subject = PlatzhalterErsetzen(Me.Betreff, \"qryRechnungen\", rst!BestellungID)\r\n         .Recipient = rst(\"EMail\")\r\n         .AsHTML = False\r\n         .Message = PlatzhalterErsetzen(Me.Inhalt, \"qryRechnungen\", rst!BestellungID)\r\n         Select Case Me.Authentifizierung\r\n           Case 2\r\n             .UsePopAuthentication = True\r\n             .UserName = Me.Benutzername\r\n             .Password = Nz(Me.Kennwort, \"\")\r\n             .POP3Host = Me.POP3Server\r\n           Case 3\r\n             .UseAuthentication = True\r\n             .UserName = Nz(Me.Benutzername, \"\")\r\n             .Password = Nz(Me.Kennwort, \"\")\r\n         End Select\r\n         .send\r\n         If bolGesendet = True Then\r\n           intGesendet = intGesendet + 1\r\n         Else\r\n           intNichtGesendet = intNichtGesendet + 1\r\n         End If\r\n       End With\r\n       SysCmd acSysCmdSetStatus, rst.AbsolutePosition + 1 &amp; \" von \" &amp; intKontakte &amp; \" versendet.\"\r\n       rst.MoveNext\r\n     Loop\r\n   End If\r\n   objMail.Disconnect\r\n   MsgBox \"Statistik:\" &amp; vbCrLf &amp; \"Anzahl erfolgreich versendeter E-Mails: \" <br \/> &amp; intGesendet &amp; vbCrLf &amp; \"Anzahl nicht versendeter E-Mails: \" &amp; intNichtGesendet\r\n   rst.Close\r\n   Set objMail = Nothing\r\n   Set rst = Nothing\r\n   Set db = Nothing\r\n   DoCmd.Hourglass False\r\nEnd Sub<\/pre>\n<\/p><\/div>\n<p><b>Personalisierung<\/b><\/p>\n<p>W&auml;hrend die Rechnungsdatens&auml;tze durchlaufen und die E-Mails zusammengestellt und versendet werden, findet eine Personalisierung der E-Mails statt. Hauptbestandteil ist nat&uuml;rlich die auf den aktuellen Kunden abgestimmte Rechnung im PDF-Format &#8211; dazu sp&auml;ter mehr. Aber auch die E-Mail selbst soll den Kunden pers&ouml;nlich ansprechen, und zwar nicht nur &uuml;ber die ohnehin notwendige E-Mail-Adresse.<\/p>\n<p>Dazu greift sich die Routine den im Formular angegebenen Betreff und den Inhalt der Mail heraus, die mit Platzhaltern wie <b>[Bestelldatum] <\/b>und <b>[Kontaktperson] <\/b>versehen sind.<\/p>\n<p>F&uuml;r den Einsatz dieser Platzhalter muss eine einzige Regel eingehalten werden: Die in der Routine durchlaufene Datensatzgruppe muss f&uuml;r jeden Platzhalter ein gleichnamiges Feld enthalten &#8211; nat&uuml;rlich ohne die eckigen Klammern, die nur zum Identifizieren der Platzhalter dienen.<\/p>\n<p>Genau das ist hier der Fall &#8211; zum besseren Verst&auml;ndnis hier noch einmal der SQL-Ausdruck der Abfrage:<\/p>\n<pre>SELECT BestellungID, Bestelldatum, Rechnungsdatum, Firma, Versenden, Kontaktperson, EMail FROM tblKunden INNER JOIN ...<\/pre>\n<p>Hier sind sowohl das Feld <b>Bestelldatum <\/b>als auch <b>Kontaktperson <\/b>enthalten. Die Platzhalter m&uuml;ssen nun bei jedem Durchlauf, also f&uuml;r jeden Rechnungsdatensatz, durch die pers&ouml;nlichen Werte ersetzt werden. Dies geschieht in den beiden folgenden Zeilen der Routine aus Listing 1:<\/p>\n<pre>.Subject = PlatzhalterErsetzen(Me!Betreff, \"qryRechnungen\", rst!BestellungID)\r\n.Message = PlatzhalterErsetzen(Me!Inhalt, \"qryRechnungen\", rst!BestellungID)<\/pre>\n<p>Diese beiden Zeilen rufen die Funktion <b>PlatzhalterErsetzen <\/b>auf, die Sie in Listing 2 finden. Die Routine erwartet den Originaltext mit den Platzhaltern, den Namen der Tabelle oder der Abfrage, aus der die Ersetzungstexte stammen, und den Wert des Prim&auml;rschl&uuml;sselfeldes f&uuml;r den betroffenen Datensatz.<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 2: Ersetzen von Platzhaltern im Mail-Betreff und Mail-Text<\/p>\n<pre>Private Function PlatzhalterErsetzen(strText As String, strTabellenname As String, lngID As Long) As String<br \/>\r\n   Dim strTemp As String\r\n   Dim intPosStart As Integer\r\n   Dim intPosEnde As Integer\r\n   Dim strPlatzhalter() As String\r\n   Dim i As Integer\r\n   strTemp = strText\r\n   intPosStart = InStr(1, strTemp, \"[\")\r\n   Do While intPosStart &gt; 0\r\n     intPosEnde = InStr(intPosStart, strTemp, \"]\")\r\n     ReDim Preserve strPlatzhalter(i + 1)\r\n     strPlatzhalter(i) = Mid(strTemp, intPosStart + 1, intPosEnde - intPosStart - 1)\r\n     i = i + 1\r\n     intPosStart = InStr(intPosEnde, strTemp, \"[\")\r\n   Loop\r\n  For i = LBound(strPlatzhalter) To UBound(strPlatzhalter) - 1\r\n     strTemp = Replace(strTemp, \"[\" &amp; strPlatzhalter(i) &amp; \"]\", _<br \/> DLookup(strPlatzhalter(i), strTabellenname, \"BestellungID = \" &amp; lngID))\r\n   Next i\r\n   PlatzhalterErsetzen = strTemp\r\nEnd Function<\/pre>\n<\/p><\/div>\n<p>Man k&ouml;nnte diese Funktion noch etwas allgemeiner gestalten und damit f&uuml;r weitere Anwendungszwecke verf&uuml;gbar machen; diese scheinen jedoch nicht allzu weit ges&auml;t, sodass diese spezielle Variante praktischer erscheint.<\/p>\n<p>Die Routine durchsucht erst den Text nach Paaren eckiger Klammern und speichert die darin enthaltenen Texte in einem String-Array namens <b>strPlatzhalter<\/b>.<\/p>\n<p>Die Routine enth&auml;lt aus Gr&uuml;nden der &uuml;bersicht keine Fehlerbehandlung, sodass eine falsche Anzahl &ouml;ffnender oder schlie&szlig;ender Klammern zu einem Fehler f&uuml;hren k&ouml;nnte.<\/p>\n<p>Anschlie&szlig;end durchl&auml;uft die Routine die gesammelten Platzhalter und ersetzt diese durch den im passenden Feld des angegebenen Datensatzes vorhandenen Ausdruck. Der R&uuml;ckgabewert der Funktion entspricht dem Eingangstext mit ersetzten Platzhaltern.<\/p>\n<p><b>PDF bauen<\/b><\/p>\n<p>Den Bau der an die Mail anzuh&auml;ngenden Berichte im PDF-Format &uuml;bernimmt eine weitere Funktion namens <b>RechnungErstellen<\/b> (s. Listing 3). Diese Routine erwartet ebenfalls den Wert des Prim&auml;rschl&uuml;ssels, um die richtige Rechnung zu erzeugen ,sowie den Pfad unterhalb des Datenbankverzeichnisses, in den sie die fertigen PDF-Dateien schreiben soll.<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 3: Erstellen der PDF-Version des Rechnungsberichts<\/p>\n<pre>Private Function RechnungErstellen(lngID As Long, strOrdner As String) As Boolean\r\n   gstrReportFilter = \"BestellungID = \" &amp; lngID\r\n   If ConvertReportToPDF(\"repRechnung\", vbNullString, CurrentProject.Path &amp; \"\\\" &amp; strOrdner &amp; \"\\Rechnung_\" _<br \/> &amp; lngID &amp; \".pdf\", False, False) = False Then\r\n     RechnungErstellen = False\r\n   End If\r\nEnd Function<\/pre>\n<\/p><\/div>\n<p>Die Routine enth&auml;lt prinzipiell nur zwei Anweisungen, die es aber in sich haben: Die erste stellt die globale Variable <b>gstrReportFilter <\/b>auf den Wert <b>&#8222;BestellungID = &#8220; &amp; lngID <\/b>ein. Dies ist wichtig, weil die Funktion zum Umwandeln des Berichts keine direkte M&ouml;glichkeit zum &uuml;bergeben von Parametern wie etwa die <b>DoCmd.OpenReport<\/b>-Methode liefert. Daher speichern Sie das einzige Filterkriterium, n&auml;mlich die ID der Bestellung, in einer Form, in der sich der Bericht diese mit einer passenden Methode beim &ouml;ffnen selbst holen kann. Ein kleiner Ausflug zum Zielbericht <b>repRechnung <\/b>zeigt, wie das funktioniert. F&uuml;r das Ereignis <b>Beim &ouml;ffnen <\/b>dieses Berichts legen Sie n&auml;mlich die folgende kleine Ereignisprozedur an:<\/p>\n<pre>Private Sub Report_Open(Cancel As Integer)\r\n   If gstrReportFilter &lt;&gt; vbNullString Then\r\n     Me.Filter = gstrReportFilter\r\n     Me.FilterOn = True\r\n     gstrReportFilter = vbNullString\r\n   End If\r\nEnd Sub<\/pre>\n<p>Auf diese Weise stellt sich der Bericht bei jedem &ouml;ffnen selbst auf den in <b>gstrReportFilter <\/b>angegebenen Filter ein. Dies macht sich die Funktion <b>ConvertToPDF <\/b>zu Nutze, die ein PDF-Dokument auf Basis des Berichts erstellt (siehe Bild 9). Da auch diese Funktion den Bericht &ouml;ffnen muss, um das PDF daraus erstellen zu k&ouml;nnen, findet auch hier die Filterung nach dem in <b>gstrReportFilter <\/b>angegebenen Ausdruck statt. <\/p>\n<div class=\"image\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic009_opt.jpeg\" alt=\"pic009.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 9: Der Bericht mit der<br \/> Rechnung wurde 1:1 in das <br \/>PDF-Dokument &uuml;bertragen.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Die Funktion <b>ConvertToPDF <\/b>erwartet neben dem Namen des Quellberichts noch den Namen der zu erstellenden PDF-Datei inklusive Pfad, der mit einfachen Textoperationen zusammengesetzt wird.<\/p>\n<p>Die Funktion finden Sie &uuml;brigens in einem der beiden aus der Beispieldatenbank aus [2] importierten Module.<\/p>\n<p><b>PDF anh&auml;ngen<\/b><\/p>\n<p>Nach dem Erstellen des PDF h&auml;ngt die Routine dieses an die Mail an. Dazu dienen die folgenden beiden Zeilen:<\/p>\n<pre>strAttachment = _<br \/> CurrentProject.path &amp; \"\\\" _<br \/> &amp; strOrdner &amp; \"\\Rechnung_\" _<br \/> &amp; rst!BestellungID &amp; \".pdf\"\r\n.Attachment = strAttachment<\/pre>\n<p>Die erste stellt den Dateinamen der PDF-Datei zusammen, die zweite f&uuml;gt den so erzeugten String der Eigenschaft <b>Attachment <\/b>des Mail-Objekts hinzu (Ergebnis s. Abb. 10).<\/p>\n<div class=\"image\">\n        <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/BerichtPDFMail-web-images\/pic010_opt.jpeg\" alt=\"pic010.tif\" \/>\n    <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 10: Eine mit der L&ouml;sung dieses Artikels verschickte E-Mail samt Anhang<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Weitere Informationen &uuml;ber das Versenden von Serienmails mit der hier verwendeten Bibliothek finden Sie in den Beitr&auml;gen <b>Serienmails mit Access <\/b>(Shortlink 380) und <b>Mails versenden mit SMTP und VBA <\/b>(Shortlink 390).<\/p>\n<p>Sehr wichtig ist auch das Notieren des Rechnungsversands in der Tabelle <b>tblBestellungen<\/b>: Dort soll das Feld <b>Rechnungsdatum<\/b> f&uuml;r die versendeten Rechnungen auf das aktuelle Datum eingestellt werden. Dies &uuml;bernimmt die folgende Anweisung (in einer Zeile):<\/p>\n<pre>db.Execute \"UPDATE tblBestellungen SET <br \/>Rechnungsdatum = \" &amp; SQLDatum(Date) &amp; \" WHERE BestellungID = \" &amp; rst!BestellungID<\/pre>\n<p class=\"zwischen-berschriftnachquellcode\">Zusammenfassung und Ausblick<\/p>\n<p>Die hier vorgestellte Beispiell&ouml;sung k&ouml;nnen Sie auf beliebige Anwendungen &uuml;bertragen, die personalisierte E-Mails mit PDF-Versionen eines oder mehrerer Berichte enthalten sollen.<\/p>\n<p>Dabei gibt es beliebige Erweiterungsoptionen. Die erste und wichtigste ist eine Fehlerbehandlung, die hier aus Gr&uuml;nden der &uuml;bersichtlichkeit weggelassen wurde.<\/p>\n<p>F&uuml;r viele Zwecke ist au&szlig;erdem die l&uuml;ckenlose Dokumentation der versendeten E-Mails und der anh&auml;ngenden Dokumente wichtig. Ein wichtiger Punkt ist hierbei, dass Sie eine Kopie jeder E-Mail an sich selbst schicken. Dabei k&ouml;nnen Sie beispielsweise eine separate E-Mail-Adresse w&auml;hlen, deren Mails direkt in den <b>Gesendete Objekte<\/b>-Ordner Ihres E-Mail-Clients landen.<\/p>\n<p>Die PDF-Dateien werden in einem Verzeichnis unterhalb des Datenbankverzeichnisses gespeichert. Sie k&ouml;nnen nat&uuml;rlich ein OLE-Feld in der Tabelle <b>tblBestellungen<\/b> anlegen und die PDF-Dokumente darin speichern. Techniken zum Speichern bin&auml;rer Dateien in OLE-Feldern finden Sie beispielsweise im Beitrag <b>Komprimierte Bin&auml;rspeicherung <\/b>(Shortlink 466).<\/p>\n<p>Zur Verwendung weiterer Platzhalter f&uuml;gen Sie einfach die entsprechenden Felder zu der Abfrage hinzu, die als Basis f&uuml;r das in der beim Senden ausgel&ouml;sten Routine durchlaufene Recordset dient. F&uuml;gen Sie au&szlig;erdem die passenden Platzhalter in den Betreff und den Inhalt der E-Mail ein.<\/p>\n<p><b>Quellen<\/b><\/p>\n<p class=\"quellen\">[1] Download vbSendmail.dll: http:\/\/www.freevbcode.com\/ShowCode.AspID=109<\/p>\n<p class=\"quellen\">[2] Download ReportToPDF: http:\/\/www.lebans.com\/reporttopdf.htm<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Rechnungsversand.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/6616496B-5417-474C-823A-23BCB2B3D5B2\/aiu_508.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sie haben eine Anwendung, die Berichte mit Rechnungen oder &auml;hnlichen Daten enth&auml;lt, und m&ouml;chten diese m&ouml;glichst in einem Rutsch als PDF-Dokument in einer E-Mail verschicken Kein Problem: Die Werkzeuge daf&uuml;r hat Access im Unternehmen in der Vergangenheit schon geliefert. Jetzt geht es an das Zusammenbauen der Einzelteile zur PDF-erzeugenden Bericht-Per-Mail-Verschickungsmaschine.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662007,66052007,44000024,44000026,44000030,44000027],"tags":[],"class_list":["post-55000508","post","type-post","status-publish","format-standard","hentry","category-662007","category-66052007","category-Berichte_und_Reporting","category-Interaktiv","category-Internet","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Berichte als PDF per Mail verschicken - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Berichte als PDF per Mail verschicken\" \/>\n<meta property=\"og:description\" content=\"Sie haben eine Anwendung, die Berichte mit Rechnungen oder &auml;hnlichen Daten enth&auml;lt, und m&ouml;chten diese m&ouml;glichst in einem Rutsch als PDF-Dokument in einer E-Mail verschicken Kein Problem: Die Werkzeuge daf&uuml;r hat Access im Unternehmen in der Vergangenheit schon geliefert. Jetzt geht es an das Zusammenbauen der Einzelteile zur PDF-erzeugenden Bericht-Per-Mail-Verschickungsmaschine.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:18:21+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg03.met.vgwort.de\/na\/8f31e27ef76f48478709cf03eef099e3\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Berichte als PDF per Mail verschicken\",\"datePublished\":\"2021-02-11T21:18:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/\"},\"wordCount\":2545,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/8f31e27ef76f48478709cf03eef099e3\",\"articleSection\":[\"2007\",\"5\\\/2007\",\"Berichte und Reporting\",\"Interaktiv\",\"Internet\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/\",\"name\":\"Berichte als PDF per Mail verschicken - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/8f31e27ef76f48478709cf03eef099e3\",\"datePublished\":\"2021-02-11T21:18:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/8f31e27ef76f48478709cf03eef099e3\",\"contentUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/8f31e27ef76f48478709cf03eef099e3\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Berichte_als_PDF_per_Mail_verschicken\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Berichte als PDF per Mail verschicken\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Berichte als PDF per Mail verschicken - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/","og_locale":"de_DE","og_type":"article","og_title":"Berichte als PDF per Mail verschicken","og_description":"Sie haben eine Anwendung, die Berichte mit Rechnungen oder &auml;hnlichen Daten enth&auml;lt, und m&ouml;chten diese m&ouml;glichst in einem Rutsch als PDF-Dokument in einer E-Mail verschicken Kein Problem: Die Werkzeuge daf&uuml;r hat Access im Unternehmen in der Vergangenheit schon geliefert. Jetzt geht es an das Zusammenbauen der Einzelteile zur PDF-erzeugenden Bericht-Per-Mail-Verschickungsmaschine.","og_url":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:18:21+00:00","og_image":[{"url":"http:\/\/vg03.met.vgwort.de\/na\/8f31e27ef76f48478709cf03eef099e3","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Berichte als PDF per Mail verschicken","datePublished":"2021-02-11T21:18:21+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/"},"wordCount":2545,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/#primaryimage"},"thumbnailUrl":"http:\/\/vg03.met.vgwort.de\/na\/8f31e27ef76f48478709cf03eef099e3","articleSection":["2007","5\/2007","Berichte und Reporting","Interaktiv","Internet","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/","url":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/","name":"Berichte als PDF per Mail verschicken - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/#primaryimage"},"thumbnailUrl":"http:\/\/vg03.met.vgwort.de\/na\/8f31e27ef76f48478709cf03eef099e3","datePublished":"2021-02-11T21:18:21+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/#primaryimage","url":"http:\/\/vg03.met.vgwort.de\/na\/8f31e27ef76f48478709cf03eef099e3","contentUrl":"http:\/\/vg03.met.vgwort.de\/na\/8f31e27ef76f48478709cf03eef099e3"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Berichte_als_PDF_per_Mail_verschicken\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Berichte als PDF per Mail verschicken"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000508"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000508\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}