{"id":55000990,"date":"2015-08-01T00:00:00","date_gmt":"2020-05-22T19:21:33","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=990"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"OutlookMails_in_Access_archivieren_II","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/","title":{"rendered":"Outlook-Mails in Access archivieren II"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/17efb469f0ac498db38ff914dab30fb0\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Im ersten Teil dieser Beitragsreihe haben wir alle Outlook-Mails eines Ordners und gegebenenfalls auch die in den Unterordnern in Access archiviert. Im vorliegenden zweiten Teil der Reihe schauen wir uns an, welche Daten wir dort nun produziert haben und was wir mit diesen alles anfangen k&ouml;nnen. Dazu geh&ouml;rt unter anderem, dass wir die Daten, da wir diese nun in Tabellenform vorliegen haben, mit den gewohnten Mitteln durchsuchen k&ouml;nnen. Damit wollen wir nun nicht mehr ben&ouml;tigte Mails endg&uuml;ltig l&ouml;schen oder Mails wiederherstellen, die wir in Outlook doch nochmal brauchen.<\/b><\/p>\n<p>Mit den im ersten Teil vorgestellten Prozeduren im Formular <b>frmMailimport <\/b>haben wir die Tabellen der Datenbank mit den Daten der <b>Outlook.pst<\/b>-Datei gef&uuml;llt &#8211; und auch noch zwei Verzeichnisse, die sich auf der gleichen Ebene wie die Datenbankanwendung befinden.<\/p>\n<p>Die Verzeichnisstruktur sieht nun wie in Bild 1 aus. Das Verzeichnis <b>MSG <\/b>enth&auml;lt die im Dateisystem abgelegten <b>.msg<\/b>-Dateien. Die L&ouml;sung bietet die M&ouml;glichkeit, diese Dateien entweder mit dem Datensatz in einem Anlagefeld der Tabelle <b>tblMailItems <\/b>zu speichern oder aber diese im Dateisystem abzulegen. Letzteres legen Sie durch den Wert f&uuml;r die maximale Gr&ouml;&szlig;e der in der Datenbank zu speichernden <b>.msg<\/b>-Dateien in den Optionen der L&ouml;sung fest. Alle Dateien, die gr&ouml;&szlig;er sind, landen im Verzeichnis <b>MSG<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_04\/pic_990_001.png\" alt=\"Verzeichnisstruktur der L&ouml;sung\" width=\"422,5\" height=\"256,7816\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Verzeichnisstruktur der L&ouml;sung<\/span><\/b><\/p>\n<p>Das Verzeichnis <b>Anlagen<\/b> enth&auml;lt, soweit Anlagen nochmals in separate Dateien extrahiert werden sollen, alle Anlagen der archivierten E-Mails. Die Anlagen befinden sich auch in den jeweiligen <b>.pst<\/b>-Dateien, sodass ein separates Speichern grunds&auml;tzlich nicht erforderlich ist. Die Tabelle <b>tblMailItems <\/b>enth&auml;lt nun einige Datens&auml;tze mit den Metadaten einer E-Mail sowie dem Inhalt. Au&szlig;erdem enth&auml;lt die Tabelle ein Anlagefeld, das die <b>.msg<\/b>-Datei aufnehmen kann, sofern diese die maximal zul&auml;ssige Gr&ouml;&szlig;e nicht &uuml;berschreitet (s. Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_04\/pic_990_002.png\" alt=\"Die Tabelle tblMailItems mit einigen Datens&auml;tzen\" width=\"600\" height=\"233,5329\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Die Tabelle tblMailItems mit einigen Datens&auml;tzen<\/span><\/b><\/p>\n<p>Die Tabelle <b>tblAnlagen <\/b>speichert zu jeder Anlage einer Mail einen Datensatz, der &uuml;ber das Feld <b>MailItemID <\/b>mit der Tabelle <b>tblMailItems <\/b>verkn&uuml;pft ist (s. Bild 3). Die dortigen Felder geben an, in welchem Verzeichnis die Anlagen gespeichert sind und wie die entsprechenden Dateien hei&szlig;en. Damit haben wir eigentlich alle Informationen, die wir ben&ouml;tigen, um unsere Such-Funktion zu implementieren!<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_04\/pic_990_003.png\" alt=\"Tabelle zum Speichern der Pfade zu den Anlagen\" width=\"600\" height=\"241,2103\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Tabelle zum Speichern der Pfade zu den Anlagen<\/span><\/b><\/p>\n<h2>Suchformular<\/h2>\n<p>Das Suchformular soll wie in Bild 4 aussehen. Dort finden wir im oberen Bereich zun&auml;chst die Felder zur Eingabe der Suchkriterien. Darunter befinden sich drei Schaltfl&auml;chen:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_04\/pic_990_004.png\" alt=\"Formular zum Durchsuchen der E-Mails\" width=\"700\" height=\"369,0181\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Formular zum Durchsuchen der E-Mails<\/span><\/b><\/p>\n<ul>\n<li><b>Suchen<\/b>: Startet die Suche auf Basis der angegebenen Suchkriterien<\/li>\n<li><b>Alle anzeigen<\/b>: Hebt den durch die Suche angewendeten Filter wieder auf.<\/li>\n<li><b>In OL wiederherstellen<\/b>: Legt eine Kopie der E-Mail in Outlook in dem Ordner an, aus dem sie urspr&uuml;nglich kopiert wurde.<\/li>\n<\/ul>\n<p>Der Entwurf des Formulars sieht wie in Bild 5 aus. Das Unterformular <b>sfmMailItems <\/b>verwendet die Tabelle <b>tblMailItems <\/b>als <b>Datenherkunft<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_04\/pic_990_005.png\" alt=\"Entwurf des Formulars frmMailItems\" width=\"650\" height=\"437,2238\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Entwurf des Formulars frmMailItems<\/span><\/b><\/p>\n<h2>Mails &uuml;ber das Unterformular anzeigen<\/h2>\n<p>Bevor wir auf die Suchfunktion eingehen, schauen wir uns an, wie Sie &uuml;ber das Unterformular eine einzelne Mail im Mailfenster von Outlook &ouml;ffnen k&ouml;nnen. Dazu soll der Benutzer einfach doppelt auf den entsprechenden Datensatz im Unterformular klicken k&ouml;nnen. Da es dazu kein allgemeines Ereignis namens <b>Beim Doppelklicken <\/b>f&uuml;r den kompletten Formularbereich gibt, m&uuml;ssen wir dieses f&uuml;r die einzelnen Textfelder im Unterformular anlegen. Die folgenden Ereignisprozeduren legen wir also im Klassenmodul des Unterformulars an:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Absender_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     MailOeffnen Me!MailitemID\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Betreff_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     MailOeffnen Me!MailitemID\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Empfaenger_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     MailOeffnen Me!MailitemID\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Erhalten_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     MailOeffnen Me!MailitemID\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Pfad_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     MailOeffnen Me!MailitemID\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit ist sichergestellt, dass die von diesen Ereignisprozeduren aufgerufene Prozedur <b>MailOeffnen <\/b>immer ausgel&ouml;st wird &#8211; egal, auf welches der Textfelder in der Datenblattansicht des Unterformulars der Benutzer klickt.<\/p>\n<p>Die Prozedur <b>MailOeffnen<\/b> finden Sie in Listing 1. Die Prozedur nimmt als Parameter den Prim&auml;rschl&uuml;sselwert des im Unterformular angeklickten Datensatzes der Tabelle <b>tblMailItems <\/b>entgegen. Sie &ouml;ffnet dann ein Recordset auf Basis der Tabelle <b>tblMailItems<\/b>, wobei diese nach dem &uuml;bergebenen Prim&auml;rschl&uuml;sselwert gefiltert wird.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>MailOeffnen(lngMailItemID<span style=\"color:blue;\"> As Long<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>rstAttachment<span style=\"color:blue;\"> As <\/span>DAO.Recordset2\r\n     <span style=\"color:blue;\">Dim <\/span>fldAttachment<span style=\"color:blue;\"> As <\/span>DAO.Field2\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblMailItems WHERE MailItemID = \" & lngMailItemID, dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> rstAttachment = rst.Fields(\"MailItem\").Value\r\n     <span style=\"color:blue;\">If <\/span>rstAttachment.RecordCount = 1<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> fldAttachment = rstAttachment.Fields(\"FileData\")\r\n         On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n         Kill CurrentProject.Path & \"\\MailItemTemp_\" & lngMailItemID & \".msg\"\r\n         <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n         fldAttachment.SaveToFile CurrentProject.Path & \"\\MailItemTemp_\" & lngMailItemID & \".msg\"\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         FileCopy CurrentProject.Path & \"\\MSG\\\" & lngMailItemID & \".msg\", CurrentProject.Path & \"\\MailItemTemp_\" _\r\n             & lngMailItemID & \".msg\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Call<\/span> ShellExecute(Me.hWnd, \"open\", CurrentProject.Path & \"\\MailItemTemp_\" & lngMailItemID & \".msg\", \"\", \"\", _\r\n         SW_NORMAL)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Die Prozedur zum Anzeigen einer E-Mail im Mail-Inspector<\/span><\/b><\/p>\n<p>Nun ist es interessant, ob die Originalmail im <b>.msg<\/b>-Format im Anlagefeld <b>MailItem <\/b>der Tabelle <b>tblMailItems <\/b>gespeichert wurde oder ob sich diese im Unterverzeichnis <b>MSG <\/b>befindet.<\/p>\n<p>Um dies herauszufinden, referenziert die Prozedur zun&auml;chst das im Anlagefeld <b>MaiItem <\/b>enthaltene und &uuml;ber die <b>Value<\/b>-Eigenschaft verf&uuml;gbare Recordset mit der eigentlichen Anlage (hier bitte Anlage eines Anlagefeldes nicht mit Anlage einer E-Mail verwechseln) und speichert es in <b>rstAttachment<\/b>. Enth&auml;lt <b>rstAttachment <\/b>nun genau einen Recordset (<b>RecordCount = 1<\/b>), dann liegt die Originalmail im <b>.msg<\/b>-Format im Anlagefeld der Tabelle vor.<\/p>\n<p>Das Feld <b>FileData <\/b>des Recordsets <b>rstAttachment <\/b>f&uuml;llt die Prozedur dann in die Variable <b>fldAttachment<\/b>. Das <b>Field2<\/b>-Objekt <b>fldAttachment <\/b>bietet dann mit der Methode <b>SaveToFile <\/b>die M&ouml;glichkeit, den Inhalt des Anlagefeldes als Datei zu speichern. Da es durchaus vorkommen kann, dass wir einmal mehrere Mail gleichzeitig anzeigen, m&uuml;ssen wir eine Konvention f&uuml;r die Dateinamen der <b>.msg<\/b>-Dateien festlegen, die ausschlie&szlig;t, dass Dateien doppelt vorhanden sind. Das ist aber kein Problem, denn wir haben ja zu jeder Mail einen Prim&auml;rschl&uuml;sselwert, den wir in den Dateinamen integrieren k&ouml;nnen. Also f&uuml;gen wir den Namen etwa nach folgendem Schema zusammen:<\/p>\n<pre>MailItemTemp_&lt;ID&gt;.msg<\/pre>\n<p>Eventuell vorhandene Dateien gleichen Namens l&ouml;scht die Prozedur vor dem Anlegen mit der <b>Kill<\/b>-Anweisung. Dann speichert sie die Datei mit <b>SaveToFile <\/b>in das gleiche Verzeichnis wie die Datenbank.<\/p>\n<p>Sollte das Anlagefeld keine Datei enthalten, haben wir beim Import eine Kopie der <b>.msg<\/b>-Datei im Verzeichnis <b>MSG <\/b>im Verzeichnis der Datenbank gespeichert. Diese kopieren wir nun mit der <b>FileCopy<\/b>-Anweisung ebenfalls in das Verzeichnis der Datenbank. Schlie&szlig;lich &ouml;ffnen wir die <b>.msg<\/b>-Datei mit der <b>ShellExecute<\/b>-Methode, welche sich die passende Anwendung f&uuml;r die Anzeige der E-Mail, in diesem Fall Outlook, aussucht und die E-Mail schlie&szlig;lich &ouml;ffnet. Das Ergebnis sieht etwa wie in Bild 6 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_04\/pic_990_006.png\" alt=\"Eine per Doppelklick ge&ouml;ffnete E-Mail\" width=\"650\" height=\"449,2308\" \/><\/p>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Eine per Doppelklick ge&ouml;ffnete E-Mail<\/span><\/b><\/p>\n<h2>Suchfunktion<\/h2>\n<p>Die Suchfunktion wertet die Eingaben in die Textfelder <b>txtAbsender<\/b>, <b>txtEmpfaenger<\/b>, <b>txtBetreff<\/b>, <b>txtInhalt<\/b>, <b>txtVon <\/b>und <b>txtBis <\/b>aus und stellt einen entsprechenden Filter zusammen.<\/p>\n<p>Sie wird durch einen Klick auf die Schaltfl&auml;che <b>cmdSuchen <\/b>ausgel&ouml;st und ist in Listing 2 zu finden. Die Prozedur pr&uuml;ft in einer If&#8230;Then-Bedingung den Inhalt der einzelnen Textfelder, und zwar &uuml;ber die L&auml;nge der enthaltenen Zeichenketten. Betr&auml;gt die mit der <b>Len<\/b>-Funktion L&auml;nge mehr als <b>0 <\/b>Zeichen, ist ein Vergleichswert vorhanden und die Prozedur f&uuml;gt einen entsprechenden, mit dem <b>AND<\/b>-Schl&uuml;sselwort beginnenden Ausdruck zu der in der Variablen <b>strFilter <\/b>gespeicherten Zeichenkette hinzu.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdSuchen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strFilter<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Me!txtAbsender) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         strFilter = strFilter & \" AND Absender LIKE ''*\" & Me!txtAbsender & \"*''\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Me!txtEmpfaenger) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         strFilter = strFilter & \" AND Empfaenger LIKE ''*\" & Me!txtEmpfaenger & \"*''\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Me!txtBetreff) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         strFilter = strFilter & \" AND Betreff LIKE ''*\" & Me!txtBetreff & \"*''\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Me!txtInhalt) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         strFilter = strFilter & \" AND Body LIKE ''*\" & Me!txtInhalt & \"*''\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Me!txtVon) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Me!txtBis) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n             strFilter = strFilter & \"AND Erhalten &gt;= \" & ISODatum(Me!txtVon) & \" AND Erhalten &lt;= \" & ISODatum(Me!txtBis)\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             strFilter = strFilter & \"AND Erhalten &gt;= \" & ISODatum(Me!txtVon)\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Me!txtBis) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n             strFilter = strFilter & \"AND Erhalten &lt;= \" & ISODatum(Me!txtBis)\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(strFilter) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         strFilter = <span style=\"color:blue;\">Mid<\/span>(strFilter, 5)\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">With<\/span> Me!sfmMailItems.Form\r\n         .Filter = strFilter\r\n         .FilterOn = <span style=\"color:blue;\">True<\/span>\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Suchfunktion<\/span><\/b><\/p>\n<p>Wenn der Benutzer beispielsweise als Absender den Wert <b>andre@minhorst.com <\/b>eingibt, lautet der Ausdruck in <b>strFilter <\/b>f&uuml;r diesen Schritt wie folgt:<\/p>\n<pre>AND Absender LIKE ''*andre@minhorst.com*''<\/pre>\n<p>Sie erkennen hier bereits, dass wir mit dem <b>LIKE<\/b>-Operator und dem Sternchen als f&uuml;hrenden und abschlie&szlig;enden Platzhalter arbeiten. Dadurch liefert das Suchergebnis auch solche Eintr&auml;ge, die den angegebenen Text nur enthalten, nicht aber komplett mit diesem identisch sein m&uuml;ssen. Auf diese Weise f&uuml;gt die Prozedur schrittweise die in den Textfeldern angegebenen Vergleichswerte zu einem Filterausdruck zusammen.<\/p>\n<p>Ein Unterschied ergibt sich bei den beiden Textfeldern <b>txtVon <\/b>und <b>txtBis<\/b>, mit denen ja der Zeitraum f&uuml;r die E-Mails zusammengesetzt werden soll. Die Prozedur pr&uuml;ft dann in einer ersten <b>If&#8230;Then<\/b>-Bedingung, ob der Benutzer im Feld <b>txtVon <\/b>ein Startdatum angegeben hat. Falls ja, pr&uuml;ft sie auch noch, ob <b>txtBis <\/b>gef&uuml;llt ist. In diesem Fall kann sie einen Ausdruck wie den folgenden zusammenstellen:<\/p>\n<pre>Erhalten &gt;= #2015\/01\/01 00:00:00# AND Erhalten &lt;= #2015\/01\/31 00:00:00#<\/pre>\n<p>Hat das Feld <b>txtBis <\/b>keinen Wert, enth&auml;lt der Ausdruck nur das Startdatum f&uuml;r den Datumsbereich:<\/p>\n<pre>Erhalten &gt;= #2015\/01\/01 00:00:00#<\/pre>\n<p>Fehlt noch die Variante, dass nur <b>txtBis <\/b>gef&uuml;llt ist:<\/p>\n<pre>Erhalten &lt;= #2015\/01\/31 00:00:00#<\/pre>\n<p>Nun hat die Prozedur kein, ein oder mehrere Kriterien zusammengestellt, die jeweils mit dem <b>AND<\/b>-Schl&uuml;sselwort beginnen. Das erste Auftreten dieses Schl&uuml;sselworts m&uuml;ssen wir nat&uuml;rlich abschneiden, was die Prozedur mit der <b>Mid<\/b>-Funktion erledigt, sofern <b>strFilter <\/b>nicht leer ist. Schlie&szlig;lich stellt sie die Eigenschaft <b>Filter <\/b>des Unterformulars auf den Wert aus <b>strFilter <\/b>ein und aktiviert den Filter durch Einstellen der Eigenschaft <b>FilterOn <\/b>auf den Wert <b>True<\/b>.<\/p>\n<h2>Alle Mails wieder einblenden<\/h2>\n<p>Wenn Sie nicht gefunden haben, was Sie suchen, k&ouml;nnen Sie die Filterkriterien zur&uuml;cksetzen und alle in der Tabelle <b>tblMailItems <\/b>enthaltenen Eintr&auml;ge wieder einblenden.<\/p>\n<p>Dazu klicken Sie einfach auf die Schaltfl&auml;che <b>cmdAlleAnzeigen<\/b>, was die folgende Prozedur ausl&ouml;st:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdAlleAnzeigen_Click()\r\n     Me!txtAbsender = Null\r\n     Me!txtEmpfaenger = Null\r\n     Me!txtBetreff = Null\r\n     Me!txtInhalt = Null\r\n     Me!txtVon = Null\r\n     Me!txtBis = Null\r\n     Me!sfmMailItems.Form.Filter = \"\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Dies leert nacheinander alle Kriterienfelder und schlie&szlig;lich auch die <b>Filter<\/b>-Eigenschaft des Unterformulars.<\/p>\n<h2>Mail in Outlook wiederherstellen<\/h2>\n<p>Angenommen, Sie haben eine komplette <b>.pst<\/b>-Datei in der hier vorgestellten Datenbank gespeichert und dann unter Outlook mit einer komplett neuen <b>.pst<\/b>-Datei neu begonnen. Die Wahrscheinlichkeit ist hoch, dass Sie die eine oder andere Mail aus der alten <b>.pst<\/b>-Datei nochmal ben&ouml;tigen. Zu diesem Zweck haben wir der Datenbank die Schaltfl&auml;che <b>cmdWiederherstellen <\/b>hinzugef&uuml;gt. Damit legen Sie die aktuell markierte Datei in genau dem Ordner unter Outlook wieder an, von dem sie auch eingelesen wurde. Das bedeutet nat&uuml;rlich auch, dass die Ordner-Struktur, sofern diese noch nicht vorhanden ist, in genau der gleichen Art wieder aufgebaut werden muss.<\/p>\n<p>Die Prozedur aus Listing 3 liest zun&auml;chst den Prim&auml;rschl&uuml;sselwert der wiederherzustellenden E-Mail aus dem aktuell markierten Datensatz im Unterformular ein und speichert diesen in der Variablen <b>lngMailItem<\/b>. Das nachfolgend erstellte Recordset auf Basis der Tabelle <b>tblMailItems <\/b>enth&auml;lt dann auch nur genau diese eine E-Mail.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdWiederherstellen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>objOutlook<span style=\"color:blue;\"> As <\/span>Outlook.Application\r\n     <span style=\"color:blue;\">Dim <\/span>objFolder<span style=\"color:blue;\"> As <\/span>Outlook.Folder\r\n     <span style=\"color:blue;\">Dim <\/span>strPfad<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strMaildatei<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>objMail<span style=\"color:blue;\"> As <\/span>Outlook.MailItem\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>rstAttachment<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>fld<span style=\"color:blue;\"> As <\/span>DAO.Field2\r\n     <span style=\"color:blue;\">Dim <\/span>lngMailItemID<span style=\"color:blue;\"> As Long<\/span>\r\n     lngMailItemID = Me!sfmMailItems.Form!MailitemID\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT MailItem FROM tblMailItems WHERE MailItemID = \" & lngMailItemID, dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> rstAttachment = rst.Fields(\"MailItem\").Value\r\n     <span style=\"color:blue;\">If <\/span>rstAttachment.RecordCount = 1<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> fld = rstAttachment!FileData\r\n         strMaildatei = CurrentProject.Path & \"\\MailItemTemp.msg\"\r\n         fld.SaveToFile strMaildatei\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         FileCopy CurrentProject.Path & \"\\MSG\\\" & lngMailItemID & \".msg\", CurrentProject.Path & \"\\MailItemTemp.msg\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> objOutlook = GetOutlook\r\n     strPfad = Me!sfmMailItems.Form!Pfad\r\n     <span style=\"color:blue;\">Set<\/span> objFolder = GetFolderByPath(strPfad)\r\n     <span style=\"color:blue;\">If <\/span>objFolder Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> objFolder = OrdnerErstellen(objOutlook, strPfad)\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> objMail = objOutlook.CreateItemFromTemplate(strMaildatei)\r\n     objMail.Move objFolder\r\n     objMail.Display\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Wiederherstellen einer E-Mail in Outlook<\/span><\/b><\/p>\n<p>Diese wird wie zuvor daraufhin untersucht, ob die <b>.msg<\/b>-Datei im Anlagefeld der Tabelle gespeichert ist oder ob sie im Verzeichnis <b>MSG <\/b>liegt. Wo auch immer die E-Mail sich befindet &#8211; die Prozedur speichert diese unter dem Namen <b>MailItemTemp.msg <\/b>im Verzeichnis der Datenbank. Vorher l&ouml;scht sie eine eventuell bereits vorhandene Datei gleichen Namens. Warum ist hier keine eindeutige Benennung unter Einbeziehung des Prim&auml;rschl&uuml;sselwertes erforderlich Weil wir mit dieser Prozedur immer nur eine E-Mail gleichzeitig anlegen. Diese wird au&szlig;erdem nicht &uuml;ber die gespeicherte <b>.msg<\/b>-Datei ge&ouml;ffnet, sodass wir diese auch immer direkt wieder l&ouml;schen k&ouml;nnen.<\/p>\n<p>Anschlie&szlig;end holt die Prozedur mit der Hilfsfunktion <b>GetOutlook <\/b>eine Instanz von Outlook und speichert diese in der Variablen <b>objOutlook<\/b>. <b>GetOutlook <\/b>schaut schlicht, ob schon eine Instanz in <b>m_Outlook <\/b>vorliegt, welches wie folgt im Modul <b>mdlmport <\/b>deklariert wird, und liefert entweder diese oder eine neue Instanz zur&uuml;ck:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>m_Outlook<span style=\"color:blue;\"> As <\/span>Outlook.Application<\/pre>\n<p>Die Funktion <b>GetOutlook<\/b> sieht so aus:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>GetOutlook()<span style=\"color:blue;\"> As <\/span>Outlook.Application\r\n     <span style=\"color:blue;\">If <\/span>m_Outlook Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> m_Outlook = <span style=\"color:blue;\">New<\/span> Outlook.Application\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(m_Outlook) = 0<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">Set<\/span> m_Outlook = <span style=\"color:blue;\">New<\/span> Outlook.Application\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> GetOutlook = m_Outlook\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Die Prozedur <b>cmdWiederherstellen_Click <\/b>liest dann aus dem Unterformular den Pfad ein, aus dem die E-Mail beim Import eingelesen wurde, also beispielsweise:<\/p>\n<pre><\/font>Outlook\\Posteingang\\Privat<\/pre>\n<p>Der folgende Aufruf der Funktion <b>GetFolderByPath <\/b>(siehe <b>mdlImport<\/b>) versucht, diesen Pfad zu finden und ein entsprechendes <b>Folder<\/b>-Objekt zur&uuml;ckzuliefern.Gelingt dies nicht, ruft die Prozedur die Funktion <b>OrdnerErstellen <\/b>auf und &uuml;bergibt den zu erstellenden Ordner als Parameter. Die Funktion erstellt den Ordner und liefert einen Verweis darauf als Funktionsergebnis zur&uuml;ck (mehr zu dieser Funktion weiter unten).<\/p>\n<p>Danach erstellt die Prozedur <b>cmdWiederherstellen_Click <\/b>die E-Mail auf Basis der <b>.msg<\/b>-Datei neu und verschiebt diese mit der <b>MoveFolder<\/b>-Methode in den neu erstellten Ordner. Schlie&szlig;lich zeigt sie die neu erstellte E-Mail noch im Mail-Inspector an.<\/p>\n<h2>Ordner erstellen<\/h2>\n<p>Die Funktion <b>OrdnerErstellen <\/b>finden Sie in Listing 4. Sie erwartet den Pfad zum gew&uuml;nschten Ordner in Form eines String-Parameters. Die Funktion ermittelt zun&auml;chst  den Basis-Ordner des Zielordners, also den, der hinter den beiden Backslash-Zeichen (\\\\) liegt &#8211; in der Regel ist dies <b>\\\\Outlook<\/b>. Dazu ermittelt sie mit <b>InStr <\/b>das erste Backslash-Zeichen ab dem dritten Zeichen betrachtet und liest den ersten Teil in die Variable <b>strRoot <\/b>ein.<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>OrdnerErstellen(strPfad<span style=\"color:blue;\"> As String<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>objFolder<span style=\"color:blue;\"> As <\/span>Outlook.Folder\r\n     <span style=\"color:blue;\">Dim <\/span>objExistingFolder<span style=\"color:blue;\"> As <\/span>Outlook.Folder\r\n     <span style=\"color:blue;\">Dim <\/span>strOrdner()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strRoot<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     strRoot = <span style=\"color:blue;\">Left<\/span>(strPfad, <span style=\"color:blue;\">InStr<\/span>(3, strPfad, \"\\\") - 1)\r\n     strPfad = <span style=\"color:blue;\">Mid<\/span>(strPfad, <span style=\"color:blue;\">InStr<\/span>(3, strPfad, \"\\\") + 1)\r\n     strOrdner = <span style=\"color:blue;\">Split<\/span>(strPfad, \"\\\")\r\n     <span style=\"color:blue;\">Set<\/span> objFolder = GetFolderByPath(strRoot)\r\n     For i = <span style=\"color:blue;\">LBound<\/span>(strOrdner) To <span style=\"color:blue;\">UBound<\/span>(strOrdner)\r\n         <span style=\"color:blue;\">Set<\/span> objExistingFolder = Nothing\r\n         <span style=\"color:blue;\">Set<\/span> objExistingFolder = GetFolderByPath(objFolder.FolderPath & \"\\\" & strOrdner(i))\r\n         <span style=\"color:blue;\">If <\/span>objExistingFolder Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">Set<\/span> objFolder = objFolder.Folders.Add(strOrdner(i))\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             <span style=\"color:blue;\">Set<\/span> objFolder = objExistingFolder\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> i\r\n     <span style=\"color:blue;\">Set<\/span> OrdnerErstellen = objFolder\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Erstellen eines Ordners in Outlook<\/span><\/b><\/p>\n<p>Der eigentliche Pfad, also der Teil hinter dem Root-Element (zum Beispiel <b>\\\\Outlook<\/b>), landet in der Variablen <b>strPfad<\/b> (etwa <b>Posteingang\\Privat<\/b>).<\/p>\n<p>Die einzelnen Elemente dieser Variablen teilen wir mit der <b>Split<\/b>-Funktion jeweils am Backslash-Zeichen auf und speichern die einzelnen Ordner (also beispielsweise <b>Posteingang <\/b>und <b>Privat<\/b>) in den Elementen des String-Arrays <b>strOrdner<\/b>.<\/p>\n<p>Die Funktion <b>GetFolderByName <\/b>holt nun einen Verweis auf das <b>Folder<\/b>-Objekt f&uuml;r das Root-Element (in diesem Beispiel <b>\\\\Outlook<\/b>) und speichert es in <b>objFolder<\/b>.<\/p>\n<p>Danach folgt die Abarbeitung der einzelnen Unterordner, und zwar in einer <b>For&#8230;Next<\/b>-Schleife &uuml;ber alle Elemente des Arrays <b>strOrdner<\/b>. Darin leert die Prozedur zun&auml;chst das Objekt <b>objExistingFolder<\/b>. Danach versucht sie, dieses mit einem Verweis auf den ersten untergeordneten Ordner von <b>\\\\Outlook <\/b>zu f&uuml;llen, hier also <b>\\\\Outlook\\Posteingang<\/b>. Gelingt dies, ist der Ordner also bereits vorhanden und muss nicht mehr angelegt werden. Stattdessen wird der Verweis aus <b>objExistingFolder <\/b>in <b>objFolder <\/b>gespeichert, damit der n&auml;chste Unterordner betrachtet werden kann. Sollte der Ordner <b>Posteingang <\/b>noch nicht unterhalb von <b>\\\\Outlook <\/b>liegen, legt die Prozedur diesen mit der <b>Add<\/b>-Methode des <b>Folders<\/b>-Objekts des Ordners aus <b>objFolder <\/b>an und speichert den neuen Ordner direkt wieder in <b>objFolder<\/b>. Wie auch immer die Konstellation ist: Nach dem ersten Schleifendurchlauf enth&auml;lt <b>objFolder <\/b>einen Verweis auf den Unterordner.<\/p>\n<p>Danach durchl&auml;uft die Schleife die weiteren Elemente des Arrays und legt die folgenden Unterordner an. Das Ergebnis liefert die Funktion schlie&szlig;lich als R&uuml;ckgabewert zur&uuml;ck.<\/p>\n<h2>&uuml;berreste l&ouml;schen<\/h2>\n<p>Nach dem Schlie&szlig;en des Formulars soll die Prozedur <b>Form_Unload <\/b>noch die tempor&auml;r angelegten Elemente l&ouml;schen. Dazu verwendet sie die <b>Kill<\/b>-Anweisung mit einem Dateinamen, der den Sternchen-Platzhalter enth&auml;lt, damit alle Dateien gel&ouml;scht werden, die mit <b>MailItemTemp_ <\/b>beginnen und die Dateiendung <b>.msg <\/b>aufweisen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Unload(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     Kill CurrentProject.Path & \"\\MailItemTemp_*.msg\"\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Deaktivierung der Fehlerbehandlung sorgt daf&uuml;r, dass eventuell noch ge&ouml;ffnete E-Mails beim Versuch, diese zu l&ouml;schen, keinen Fehler ausl&ouml;sen. Sollten so einige Dateien im Verzeichnis verbleiben, werden diese eben beim n&auml;chsten Einsatz des Formulars gel&ouml;scht.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Im ersten Teil dieser Beitragsreihe haben Sie nun den Import von E-Mails aus einer <b>.pst<\/b>-Datei in eine Access-Datenbank kennengelernt. Der vorliegende Teil macht diese Daten nutzbar, indem er eine Suchfunktion hinzuf&uuml;gt, mit der Sie gezielt nach bestimmten E-Mails suchen k&ouml;nnen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Outlook_II.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{EE4B9095-6555-4572-908D-0C95E4F24D43}\/aiu_990.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Teil dieser Beitragsreihe haben wir alle Outlook-Mails eines Ordners und gegebenenfalls auch die in den Unterordnern in Access archiviert. Im vorliegenden zweiten Teil der Reihe schauen wir uns an, welche Daten wir dort nun produziert haben und was wir mit diesen alles anfangen k&ouml;nnen. Dazu geh&ouml;rt unter anderem, dass wir die Daten, da wir diese nun in Tabellenform vorliegen haben, mit den gewohnten Mitteln durchsuchen k&ouml;nnen. Damit wollen wir nun nicht mehr ben&ouml;tigte Mails endg&uuml;ltig l&ouml;schen oder Mails wiederherstellen, die wir in Outlook doch nochmal brauchen.<\/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":[662015,66042015,44000026],"tags":[],"class_list":["post-55000990","post","type-post","status-publish","format-standard","hentry","category-662015","category-66042015","category-Interaktiv"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Outlook-Mails in Access archivieren II - 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\/OutlookMails_in_Access_archivieren_II\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Outlook-Mails in Access archivieren II\" \/>\n<meta property=\"og:description\" content=\"Im ersten Teil dieser Beitragsreihe haben wir alle Outlook-Mails eines Ordners und gegebenenfalls auch die in den Unterordnern in Access archiviert. Im vorliegenden zweiten Teil der Reihe schauen wir uns an, welche Daten wir dort nun produziert haben und was wir mit diesen alles anfangen k&ouml;nnen. Dazu geh&ouml;rt unter anderem, dass wir die Daten, da wir diese nun in Tabellenform vorliegen haben, mit den gewohnten Mitteln durchsuchen k&ouml;nnen. Damit wollen wir nun nicht mehr ben&ouml;tigte Mails endg&uuml;ltig l&ouml;schen oder Mails wiederherstellen, die wir in Outlook doch nochmal brauchen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T19:21:33+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/17efb469f0ac498db38ff914dab30fb0\" \/>\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\\\/OutlookMails_in_Access_archivieren_II\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Outlook-Mails in Access archivieren II\",\"datePublished\":\"2020-05-22T19:21:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/\"},\"wordCount\":2376,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/17efb469f0ac498db38ff914dab30fb0\",\"articleSection\":[\"2015\",\"4\\\/2015\",\"Interaktiv\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/\",\"name\":\"Outlook-Mails in Access archivieren II - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/17efb469f0ac498db38ff914dab30fb0\",\"datePublished\":\"2020-05-22T19:21:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/17efb469f0ac498db38ff914dab30fb0\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/17efb469f0ac498db38ff914dab30fb0\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_II\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Outlook-Mails in Access archivieren II\"}]},{\"@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":"Outlook-Mails in Access archivieren II - 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\/OutlookMails_in_Access_archivieren_II\/","og_locale":"de_DE","og_type":"article","og_title":"Outlook-Mails in Access archivieren II","og_description":"Im ersten Teil dieser Beitragsreihe haben wir alle Outlook-Mails eines Ordners und gegebenenfalls auch die in den Unterordnern in Access archiviert. Im vorliegenden zweiten Teil der Reihe schauen wir uns an, welche Daten wir dort nun produziert haben und was wir mit diesen alles anfangen k&ouml;nnen. Dazu geh&ouml;rt unter anderem, dass wir die Daten, da wir diese nun in Tabellenform vorliegen haben, mit den gewohnten Mitteln durchsuchen k&ouml;nnen. Damit wollen wir nun nicht mehr ben&ouml;tigte Mails endg&uuml;ltig l&ouml;schen oder Mails wiederherstellen, die wir in Outlook doch nochmal brauchen.","og_url":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T19:21:33+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/17efb469f0ac498db38ff914dab30fb0","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\/OutlookMails_in_Access_archivieren_II\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Outlook-Mails in Access archivieren II","datePublished":"2020-05-22T19:21:33+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/"},"wordCount":2376,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/17efb469f0ac498db38ff914dab30fb0","articleSection":["2015","4\/2015","Interaktiv"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/","url":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/","name":"Outlook-Mails in Access archivieren II - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/17efb469f0ac498db38ff914dab30fb0","datePublished":"2020-05-22T19:21:33+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/17efb469f0ac498db38ff914dab30fb0","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/17efb469f0ac498db38ff914dab30fb0"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_II\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Outlook-Mails in Access archivieren II"}]},{"@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\/55000990","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=55000990"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000990\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000990"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000990"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}