{"id":55000997,"date":"2015-10-01T00:00:00","date_gmt":"2020-05-22T19:10:59","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=997"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"OutlookMails_in_Access_archivieren_III","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/","title":{"rendered":"Outlook-Mails in Access archivieren III"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/84275f7fd7c04ecdb4555f080eecb3df\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Die Archivierungsdatenbank f&uuml;r Outlook-Mails kann nun schon Mails importieren und bietet eine Suchfunktion f&uuml;r die importierten Mails an. Au&szlig;erdem k&ouml;nnen Sie die gefundenen E-Mails mit Outlook &ouml;ffnen und darin wiederherstellen. Nun wollen wir die L&ouml;sung noch so erweitern, dass Sie beispielsweise mehrere Ordner in Outlook ausw&auml;hlen k&ouml;nnen, deren E-Mails importiert werden sollen. Au&szlig;erdem soll der Import gleich beim Start der Anwendung gelingen.<\/b><\/p>\n<p>Die neue Version des Formulars sieht nun wie in Bild 1 aus. Das Formular enth&auml;lt im Gegensatz zur vorherigen Version nun eine Liste mit mehreren Verzeichnissen, deren Detaildaten Sie durch Anklicken der Eintr&auml;ge im unteren Bereich anzeigen k&ouml;nnen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_05\/pic_997_001.png\" alt=\"Neue Version des Formulars zum Einlesen der E-Mails\" width=\"650\" height=\"371,1621\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Neue Version des Formulars zum Einlesen der E-Mails<\/span><\/b><\/p>\n<p>Oben finden Sie au&szlig;erdem zwei Schaltfl&auml;chen, mit denen Sie eine neue Konfiguration hinzuf&uuml;gen oder eine bestehende l&ouml;schen k&ouml;nnen.<\/p>\n<p>Der untere Bereich enth&auml;lt die Detaildaten, die bereits die Version aus dem vorherigen Teil der Beitragsreihe angeboten hat. Diese Daten stammen aus der Tabelle <b>tblOptionen<\/b>. Unten finden Sie drei Schaltfl&auml;chen:<\/p>\n<ul>\n<li><b>Import starten<\/b>: Startet den Import f&uuml;r alle angelegten Konfigurationen.<\/li>\n<li><b>Alle importierten Mails und Dateien l&ouml;schen<\/b>: L&ouml;scht alle in der Tabelle <b>tblMailItems<\/b> und der verkn&uuml;pften Tabelle <b>tblAnlagen <\/b>enthaltenen Daten sowie die Daten in den beiden Unterformularen <b>MSG <\/b>und <b>Anlagen<\/b>.<\/li>\n<li><b>Mailmarkierungen entfernen<\/b>: Beim Importieren der Mails erh&auml;lt jede importierte Mail den Wert <b>saved <\/b>f&uuml;r die Eigenschaft <b>BillingInformationen<\/b>. Wenn Sie die Mails nochmals einlesen m&ouml;chten, m&uuml;ssen Sie diese Eigenschaft wieder leeren.<\/li>\n<\/ul>\n<h2>Formular erstellen<\/h2>\n<p>Das Formular <b>frmMailImport <\/b>besteht nun zus&auml;tzlich noch aus einem Unterformular namens <b>sfmMailImport<\/b>. Dieses ist wie in Bild 2 aufgebaut und verwendet die Tabelle <b>tblOptionen <\/b>als Datenherkunft.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_05\/pic_997_002.png\" alt=\"Das Unterformular sfmMailImport in der Entwurfsansicht\" width=\"650\" height=\"247,5749\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Das Unterformular sfmMailImport in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Das Hauptformular nimmt dieses Unterformular auf und verwendet zus&auml;tzlich die in Bild 3 zu erkennenden Steuerelemente. Besondere Bedeutung kommt nat&uuml;rlich dem Listenfeld <b>lstVerzeichnisse <\/b>zu. Es verwendet ebenfalls eine Datensatzherkunft auf Basis der Tabelle <b>tblOptionen<\/b>, allerdings hier in Form einer Abfrage, welche nur die beiden Felder <b>OptionID <\/b>und <b>Verzeichnis <\/b>ber&uuml;cksichtigt:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_05\/pic_997_003.png\" alt=\"Das Formular frmMailImport in der Entwurfsansicht\" width=\"650\" height=\"408,3995\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Das Formular frmMailImport in der Entwurfsansicht<\/span><\/b><\/p>\n<pre>SELECT OptionID, Verzeichnis FROM tblOptionen;<\/pre>\n<p>Damit nur das Verzeichnis im Listenfeld erscheint, stellen Sie die Eigenschaft <b>Spaltenanzahl <\/b>auf den Wert <b>2 <\/b>und die Eigenschaft <b>Spaltenbreiten <\/b>auf den Wert <b>0cm <\/b>ein. Wenn der Benutzer auf einen der Eintr&auml;ge klickt, sollen dessen Details im unteren Bereich des Formulars eingeblendet werden.<\/p>\n<p>Dies erreichen Sie mithilfe zweier Prozeduren. Die erste ist die Ereignisprozedur, die durch das Ereignis <b>Nach Aktualisierung <\/b>des Listenfeldes ausgel&ouml;st wird (s. Listing 1).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>lstVerzeichnisse_AfterUpdate()\r\n     VerzeichnisAktualisieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Diese Prozedur wird nach der Auswahl eines Eintrags im Listenfeld ausgel&ouml;st.<\/span><\/b><\/p>\n<p>Diese ruft eine weitere Prozedur namens <b>VerzeichnisAktualisieren<\/b> auf, die Sie in Listing 2 finden. Die Prozedur pr&uuml;ft, ob aktuell ein Eintrag im Listenfeld markiert ist (was beispielsweise nicht der Fall ist, wenn es leer ist und der Benutzer dennoch hineinklickt) und verschiebt den Datensatzzeiger im Unterformular auf den Datensatz, dessen <b>OptionID <\/b>dem aktuell im Listenfeld ausgew&auml;hlten Eintrag entspricht.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>VerzeichnisAktualisieren()\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> IsNull(Me!lstVerzeichnisse)<span style=\"color:blue;\"> Then<\/span>\r\n         Me!sfmMailimport.Form.Recordset.FindFirst \"OptionID = \" & Me!lstVerzeichnisse\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Aktualisierung der Detaildaten zu einem Listenfeldeintrag<\/span><\/b><\/p>\n<p>Beim Laden des Formulars soll das Listenfeld gleich den ersten Datensatz markieren, damit der Benutzer erkennen kann, zu welchem Listeneintrag die Daten aus dem Unterformular geh&ouml;ren. Dies erledigen wir mit der Ereignisprozedur, die durch das Ereignis <b>Beim Laden <\/b>ausgel&ouml;st wird und nur eine einzige Anweisung enth&auml;lt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     Me!lstVerzeichnisse = Me!lstVerzeichnisse.ItemData(0)\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Anlegen einer neuen Konfiguration<\/h2>\n<p>Ein Klick auf die Schaltfl&auml;che <b>cmdNeu<\/b> im oberen Bereich des Formulars soll einen neuen Datensatz in der Tabelle anlegen, der gleichzeitig im Listenfeld und im Unterformular erscheint. Dazu fragen wir das Outlook-Verzeichnis, f&uuml;r welches die Konfiguration bestimmt sein soll, gleich beim Anklicken der <b>Neu<\/b>-Schaltfl&auml;che ab. Die Prozedur <b>cmdNeu_Click<\/b> aus Listing 3, die durch das Anklicken ausgel&ouml;st wird, ermittelt zun&auml;chst den Titel des aktuell ge&ouml;ffneten Access-Fensters. Dies ist n&ouml;tig, da beim nachfolgenden Aufrufen des Outlook-Dialogs zum Ausw&auml;hlen eines Outlook-Ordners gelegentlich das ge&ouml;ffnete Outlook-Fenster stehen bleibt und das aufrufende Access-Fenster verdeckt ist. Um das Access-Fenster anschlie&szlig;end wieder in den Vordergrund zu holen, ben&ouml;tigen wir den Fenstertitel. Diesen erhalten wir mithilfe der Funktion <b>GetActiveWindowTitle<\/b>, die Sie im Modul <b>mdlAPI <\/b>finden.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdNeu_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strVerzeichnis<span style=\"color:blue;\"> As String<\/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>lngOptionID<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strFenster<span style=\"color:blue;\"> As String<\/span>\r\n     strFenster = GetActiveWindowTitle\r\n     strVerzeichnis = VerzeichnisWaehlen\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(strVerzeichnis) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n         db.Execute \"INSERT INTO tblOptionen(Verzeichnis) VALUES(''\" & strVerzeichnis & \"'')\"\r\n         lngOptionID = db.OpenRecordset(\"SELECT @@IDENTITY\").Fields(0)\r\n         Me!lstVerzeichnisse.Requery\r\n         Me!sfmMailimport.Form.Requery\r\n         Me!lstVerzeichnisse = lngOptionID\r\n         VerzeichnisAktualisieren\r\n         AppActivate strFenster\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Prozedur zum Anlegen einer neuen Konfiguration<\/span><\/b><\/p>\n<p>Die Funktion <b>VerzeichnisWaehlen <\/b>haben Sie ja bereits in den vorhergehenden Teilen dieser Beitragsreihe kennen gelernt &#8211; es &ouml;ffnet den Outlook-Dialog zum Ausw&auml;hlen eines Ordners (s. Bild 4). Danach pr&uuml;ft die Prozedur, ob der Benutzer einen Ordner ausgew&auml;hlt hat. In diesem Fall erzeugt er eine Referenz auf das aktuelle <b>Database<\/b>-Objekt und f&uuml;hrt eine <b>INSERT INTO<\/b>-Abfrage aus, welche einen neuen Datensatz in die Tabelle <b>tblOptionen <\/b>einf&uuml;gt und dabei gleich das Verzeichnis in das entsprechende Feld eintr&auml;gt. Die Abfrage <b>SELECT @@IDENTITY <\/b>ermittelt den Wert des Prim&auml;rschl&uuml;sselfeldes des neu hinzugef&uuml;gten Datensatzes, das Ergebnis landet in der Variablen <b>lngOptionID<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_05\/pic_997_004.png\" alt=\"Ausw&auml;hlen des Mail-Ordners\" width=\"425\" height=\"352,6099\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Ausw&auml;hlen des Mail-Ordners<\/span><\/b><\/p>\n<p>Da nun ein neuer Datensatz vorliegt, m&uuml;ssen die Datenherkunft des Unterformulars sowie die Datensatzherkunft des Listenfeldes aktualisiert werden, was die Prozedur jeweils mit der <b>Requery<\/b>-Methode erledigt. Danach stellt die Prozedur das Listenfeld auf den neu hinzugef&uuml;gten Eintrag ein und ruft die bereits weiter oben vorgestellte Prozedur <b>VerzeichnisAktualisieren <\/b>auf, die den aktuell im Listenfeld markierten Eintrag im Unterformular anzeigt.<\/p>\n<p>Schlie&szlig;lich aktiviert die Prozedur <b>AppActivate <\/b>das Fenster mit dem weiter oben in der Variablen <b>strFenster <\/b>gespeicherten Titel der Access-Anwendung.<\/p>\n<h2>Eine Konfiguration l&ouml;schen<\/h2>\n<p>Ein Klick auf die Schaltfl&auml;che <b>cmdLoeschen <\/b>im oberen Bereich des Formulars soll den aktuell markierten Eintrag im Listenfeld aus der Tabelle <b>tblOptionen <\/b>l&ouml;schen und die &uuml;brigen Steuerelemente aktualisieren, sodass der gel&ouml;schte Datensatz nirgends mehr auftaucht.<\/p>\n<p>Die durch die Schaltfl&auml;che ausgel&ouml;ste Prozedur sieht wie in Listing 4 aus und pr&uuml;ft zun&auml;chst, ob &uuml;berhaupt ein Eintrag im Listenfeld markiert ist. Ist dies der Fall, fragt die Prozedur den Benutzer per Meldungsfenster, ob die Konfiguration mit dem angegebenen Verzeichnis tats&auml;chlich gel&ouml;scht werden soll.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdLoeschen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> IsNull(Me!lstVerzeichnisse)<span style=\"color:blue;\"> Then<\/span>\r\n         If <span style=\"color:blue;\">MsgBox<\/span>(\"Verzeichnis ''\" & Me!lstVerzeichnisse.Column(1) & \"'' wirklich aus der Liste entfernen\", _\r\n                 vbYesNo) = vbYes Then\r\n             <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n             db.Execute \"DELETE FROM tblOptionen WHERE OptionID = \" & Me!lstVerzeichnisse, dbFailOnError\r\n             Me!lstVerzeichnisse.Requery\r\n             Me!sfmMailimport.Form.Requery\r\n             Me!lstVerzeichnisse = Me!lstVerzeichnisse.ItemData(0)\r\n             VerzeichnisAktualisieren\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 4: L&ouml;schen einer Konfiguration<\/span><\/b><\/p>\n<p>Falls ja, entfernt die Prozedur zun&auml;chst den entsprechenden Datensatz per <b>DELETE<\/b>-Anweisung aus der Tabelle <b>tblOptionen<\/b>. Anschlie&szlig;end aktualisiert sie den Inhalt des Listenfelds sowie des Unterformulars. Au&szlig;erdem markiert sie im Listenfeld den ersten Eintrag und sorgt durch den Aufruf der Prozedur <b>VerzeichnisAktualisieren<\/b> auch noch f&uuml;r die Anzeige der Details zu diesem Eintrag im Unterformular.<\/p>\n<h2>Importierte Elemente l&ouml;schen<\/h2>\n<p>Die Schaltfl&auml;che <b>cmdAlleLoeschen <\/b>aus dem unteren Bereich soll sowohl die Eintr&auml;ge der Tabelle <b>tblMail-Items <\/b>und der verkn&uuml;pften Tabelle <b>tblAnlagen <\/b>l&ouml;schen als auch die Dateien aus den beiden Verzeichnissen <b>MSG <\/b>und <b>Anlagen<\/b> (s. Listing 5).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdAlleLoeschen_Click()\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>objFileSystemObject<span style=\"color:blue;\"> As Object<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">MsgBox<\/span>(\"Klicken Sie auf OK, um alle gespeicherten Daten zu l&ouml;schen.\", vbOKCancel) = vbOK<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n         db.Execute \"DELETE FROM tblMailItems\", dbFailOnError\r\n         <span style=\"color:blue;\">Set<\/span> objFileSystemObject = CreateObject(\"Scripting.FileSystemObject\")\r\n         <span style=\"color:blue;\">If <\/span>Dir(CurrentProject.Path & \"\\Anlagen\", vbDirectory) = \"Anlagen\"<span style=\"color:blue;\"> Then<\/span>\r\n             objFileSystemObject.DeleteFolder CurrentProject.Path & \"\\Anlagen\"\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">If <\/span>Dir(CurrentProject.Path & \"\\MSG\", vbDirectory) = \"Anlagen\"<span style=\"color:blue;\"> Then<\/span>\r\n             objFileSystemObject.DeleteFolder CurrentProject.Path & \"\\MSG\"\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> objFileSystemObject = Nothing\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Die Tabellen und Unterverzeichnisse wurden geleert.\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: L&ouml;schen aller Mails und Dateien<\/span><\/b><\/p>\n<p>Die Prozedur fragt sicherheitshalber noch einmal nach, ob die betroffenen Daten tats&auml;chlich gel&ouml;scht werden sollen. Ist dies der Fall, l&ouml;scht sie zun&auml;chst die Daten aus der Tabelle <b>tblMailItems<\/b>. Die Daten der verkn&uuml;pften Tabelle <b>tblAnlagen <\/b>brauchen wir danach nicht explizit zu l&ouml;schen. Damit dies automatisch geschieht, legen wir f&uuml;r die Beziehung zwischen den beiden Tabellen referenzielle Integrit&auml;t fest und aktivieren die Option <b>L&ouml;schweitergabe an verwandte Datens&auml;tze<\/b> (s. Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_05\/pic_997_005.png\" alt=\"Festlegung der L&ouml;schweitergabe f&uuml;r die Beziehung \" width=\"550\" height=\"447,2319\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Festlegung der L&ouml;schweitergabe f&uuml;r die Beziehung <\/span><\/b><\/p>\n<p>Danach k&uuml;mmert sich die Prozedur um die Dateien. Hier verwendet sie das <b>FileSystemObject<\/b>, das wir als <b>Object <\/b>deklarieren und mit der <b>CreateObject<\/b>-Methode instanzieren. Auf diese Weise verwenden wir einmal Late Binding und verzichten auf den Verweis auf die entsprechende Bibliothek.<\/p>\n<p>Die Prozedur pr&uuml;ft dann mit der <b>Dir<\/b>-Funktion, ob das Verzeichnis <b>Anlagen <\/b>&uuml;berhaupt im Verzeichnis der aktuellen Datenbank vorliegt. Falls ja, ruft es die <b>DeleteFolder<\/b>-Methode von <b>objFileSystemObject <\/b>auf und l&ouml;scht diesen Ordner auf diese Weise. Auf die gleiche Weise l&ouml;scht die Prozedur auch das Verzeichnis <b>MSG<\/b>. Beide Verzeichnisse werden nach Bedarf durch die Prozeduren, welche die Mails einlesen, wieder angelegt. Eine Meldung gibt schlie&szlig;lich noch eine Information &uuml;ber den Abschluss der Arbeiten aus.<\/p>\n<h2>Entfernen der Mail-Markierungen<\/h2>\n<p>Wenn wir die E-Mails in die Datenbank importieren, markieren wir die eingelesen E-Mails, sodass wir diese nicht bei jedem Einlesevorgang erneut einlesen. Dazu stellt die Anwendung die Eigenschaft <b>BillingInformation<\/b>, die in der Regel nicht verwendet wird, auf den Wert <b>saved <\/b>ein.<\/p>\n<p>Sollten Sie nun, beispielsweise beim Testen dieser Beispielanwendung, die eingelesenen E-Mails l&ouml;schen, um diese erneut einzulesen, wird dies nicht gelingen &#8211; die E-Mails sind immer noch markiert und werden nicht eingelesen. Sie m&uuml;ssen also zun&auml;chst die E-Mails von ihren Markierungen befreien. Dies erledigen Sie mit der Schaltfl&auml;che <b>cmdMailmarkierungenEntfernen<\/b>. Diese l&ouml;st die Ereignisprozedur aus Listing 6 aus.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdMailmarkierungenEntfernen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>lngAnzahl<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngOptionID<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strVerzeichnis<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>bolRekursiv<span style=\"color:blue;\"> As Boolean<\/span>\r\n     For i = 0 To Me!lstVerzeichnisse.ListCount - 1\r\n         lngOptionID = Me!lstVerzeichnisse.ItemData(i)\r\n         strVerzeichnis = DLookup(\"Verzeichnis\", \"tblOptionen\", \"OptionID = \" & lngOptionID)\r\n         bolRekursiv = DLookup(\"Rekursiv\", \"tblOptionen\", \"OptionID = \" & lngOptionID)\r\n         BillingInformationLeerenFolder strVerzeichnis, lngAnzahl, bolRekursiv\r\n     <span style=\"color:blue;\">Next<\/span> i\r\n     <span style=\"color:blue;\">MsgBox<\/span> \"Markierung bei \" & lngAnzahl & \" Mails entfernt.\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 6: Entfernen der Markierungen der E-Mails in der Eigenschaft BillingInformation<\/span><\/b><\/p>\n<p>Die Prozedur durchl&auml;uft alle Eintr&auml;ge des Listenfeldes und liest dabei jeweils den Wert der ersten Spalte in die Variable <b>lngOptionID <\/b>ein. Damit ermittelt sie per <b>DLookup <\/b>den Namen des Outlook-Ordners aus dem Feld <b>Verzeichnis <\/b>der Tabelle <b>tblOptionen <\/b>sowie den Inhalt des Feldes <b>Rekursiv<\/b>. Damit ruft sie die Funktion <b>Billing-InformationLeerenFolder <\/b>auf und &uuml;bergibt dieser den Outlook-Ordner, die Variable <b>lngAnzahl <\/b>zum Ermitteln der Anzahl der ge&auml;nderten Mails sowie die Variable <b>bolRekursiv<\/b>, die angibt, ob der aktuell durchlaufene Ordner als rekursiv gekennzeichnet ist.<\/p>\n<p>Die Prozedur <b>BillingInformationLeerenFolder <\/b>aus Listing 7 ermittelt mit der Funktion <b>GetFolderByPath<\/b>, die Sie ebenfalls im Verzeichnis <b>mdlImport <\/b>finden, das <b>Folder<\/b>-Objekt zum angegebenen Ordner aus <b>strVerzeichnis<\/b>, und speichert diesen in der Variablen <b>objFolder<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>BillingInformationLeerenFolder(strVerzeichnis<span style=\"color:blue;\"> As String<\/span>, lngAnzahl<span style=\"color:blue;\"> As Long<\/span>, bolRekursiv<span style=\"color:blue;\"> As Boolean<\/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>lngAnzahlEingelesen<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> objFolder = GetFolderByPath(strVerzeichnis)\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> objFolder Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         lngAnzahlEingelesen = objFolder.Items.Count\r\n         BillingInformationLeerenMails objFolder, lngAnzahl\r\n         <span style=\"color:blue;\">If <\/span>bolRekursiv<span style=\"color:blue;\"> Then<\/span>\r\n             BillingInformationLeerenFolderRek objFolder, lngAnzahl\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 7: Hauptfunktion zum Leeren der Eigenschaft BillingInformation der Elemente eines Folders<\/span><\/b><\/p>\n<p>Ist das Objekt nicht leer, ermittelt die Prozedur die Anzahl der enthaltenen Elemente, und zwar mit der <b>Count<\/b>-Eigenschaft der <b>Items<\/b>-Auflistung.<\/p>\n<p>Da es sich hier unter Umst&auml;nden um einen Ordner handelt, dessen Unterordner auch eingelesen werden sollen (<b>bolRekursiv = True<\/b>), gibt es nun zwei Aktionen: Die erste ruft die Prozedur <b>BillingInformationLeerenMails<\/b> auf, welche die Mails vom Inhalt der Eigenschaft <b>BillingInformation<\/b> befreit, und gegebenenfalls die Prozedur <b>BillingInformationLeerenFolderRek<\/b>, welche sich um die Unterordner k&uuml;mmert.<\/p>\n<p>Die rekursiv definierte Funktion <b>BillingInformationLeerenFolderRek <\/b>erwartet mit dem Parameter <b>objParent <\/b>den &uuml;bergeordneten Ordner und die Variable zum Hinzuaddieren der betroffenen Elemente (s. Listing 8). Sie durchl&auml;uft alle untergeordneten <b>Folder<\/b>-Elemente und ruft f&uuml;r diese jeweils wiederum die Prozedur <b>BillingInformationLeerenMails<\/b> auf.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>BillingInformationLeerenFolderRek(objParent<span style=\"color:blue;\"> As <\/span>Outlook.Folder, lngAnzahl<span style=\"color:blue;\"> As Long<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>objFolder<span style=\"color:blue;\"> As <\/span>Outlook.Folder\r\n     For Each objFolder In objParent.Folders\r\n         BillingInformationLeerenMails objFolder, lngAnzahl\r\n         BillingInformationLeerenFolderRek objFolder, lngAnzahl\r\n     <span style=\"color:blue;\">Next<\/span> objFolder\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 8: Rekursive Funktion zum Leeren der Eigenschaft BillingInformation der Elemente eines untergeordneten Folders<\/span><\/b><\/p>\n<p>Diese Prozedur schlie&szlig;lich finden Sie in Listing 9. Sie erh&auml;lt einen Verweis auf den zu durchlaufenden Ordner und durchl&auml;uft alle Elemente der <b>Items<\/b>-Auflistung des <b>Folder<\/b>-Objekts in einer <b>For Each<\/b>-Schleife.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>BillingInformationLeerenMails(objFolder<span style=\"color:blue;\"> As <\/span>Outlook.Folder, lngAnzahl<span style=\"color:blue;\"> As Long<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>objItem<span style=\"color:blue;\"> As Object<\/span>\r\n     For Each objItem In objFolder.Items\r\n         <span style=\"color:blue;\">If <\/span>TypeName(objItem) = \"MailItem\"<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">If <\/span>BillingInformationLeerenMail(objItem)<span style=\"color:blue;\"> Then<\/span>\r\n                 lngAnzahl = lngAnzahl + 1\r\n             <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> objItem\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 9: Diese Funktion durchl&auml;uft alle Mailelemente und ruft f&uuml;r diese eine weitere Funktion auf.<\/span><\/b><\/p>\n<p>Dort pr&uuml;ft sie, ob es sich tats&auml;chlich um ein <b>MailItem<\/b>-Objekt handelt und ruft f&uuml;r dieses die Funktion <b>BillingInformationLeerenMail <\/b>auf. Liefert diese den Wert <b>True <\/b>zur&uuml;ck, erh&ouml;ht sich <b>lngAnzahl <\/b>um eins.<\/p>\n<p>Die Funktion <b>BillingInformationLeerenMail<\/b> schlie&szlig;lich erwartet das <b>MailItem<\/b>-Objekt und pr&uuml;ft zun&auml;chst, ob die Eigenschaft <b>BillingInformation <\/b>den Wert <b>saved <\/b>enth&auml;lt.<\/p>\n<p>Nur in diesem Fall leert sie die Eigenschaft und speichert das <b>MailItem<\/b>-Objekt. Als R&uuml;ckgabewert legt die Prozedur dann den Wert <b>True <\/b>fest (s. Listing 10). Fertig &#8211; auf diese Weise wird die Eigenschaft <b>BillingInformation <\/b>aller E-Mails in den angegebenen Ordnern geleert.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>BillingInformationLeerenMail(objMailItem<span style=\"color:blue;\"> As <\/span>Outlook.MailItem)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">With<\/span> objMailItem\r\n         <span style=\"color:blue;\">If <\/span>.BillingInformation = \"saved\"<span style=\"color:blue;\"> Then<\/span>\r\n             .BillingInformation = \"\"\r\n             .Save\r\n             BillingInformationLeerenMail = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 10: Diese Funktion &auml;ndert den Inhalt der Eigenschaft BillingInformation und liefert den Wert True zur&uuml;ck.<\/span><\/b><\/p>\n<h2>Beim Start automatisch einlesen<\/h2>\n<p>Damit die Anwendung beim Starten automatisch den aktuellen Stand der angegebenen Outlook-Ordner einliest, legen wir eine passende Funktion an, die durch das <b>AutoExec<\/b>-Makro aufgerufen wird. Das Makro konfigurieren Sie wie in Bild 6.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_05\/pic_997_006.png\" alt=\"Das AutoExec-Makro\" width=\"425\" height=\"176,0193\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Das AutoExec-Makro<\/span><\/b><\/p>\n<p>Die von dort aufgerufene Funktion <b>MailsImportieren<\/b> finden Sie in Listing 11. Sie erstellt zun&auml;chst ein Recordset auf Basis der Tabelle <b>tblOptionen<\/b>, die ja alle Konfigurationsdatens&auml;tze der Anwendung mit den einzulesenden Verzeichnissen enth&auml;lt. Sollte diese leer sein, zeigt die Prozedur direkt das Formular <b>frmMailImport<\/b> an und wird beendet. Anderenfalls durchl&auml;uft die Prozedur in einer <b>Do While<\/b>-Schleife alle Datens&auml;tze der Tabelle <b>tblOptionen<\/b>. Sie tr&auml;gt dabei den Namen des Verzeichnisses in die Variable <b>strVerzeichnis <\/b>und den Inhalt des Feldes <b>Rekursiv <\/b>in die Variable <b>bolRekursiv <\/b>ein.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>MailsImportieren()\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>lngAnzahlAktuell<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngAnzahlGesamt<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strVerzeichnis<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngGroesse<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>bolNeuEinlesen<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>bolRekursiv<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>bolVorhandeneLoeschen<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>bolAnlagenSpeichern<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblOptionen\", dbOpenDynaset)\r\n     SysCmd acSysCmdSetStatus, \"Einzulesende Mails werden gez&auml;hlt\"\r\n     <span style=\"color:blue;\">If <\/span>rst.EOF<span style=\"color:blue;\"> Then<\/span>\r\n         DoCmd.OpenForm \"frmMailImport\"\r\n         <span style=\"color:blue;\">Exit Function<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         strVerzeichnis = rst!Verzeichnis\r\n         bolRekursiv = rst!Rekursiv\r\n         lngAnzahlGesamt = lngAnzahlGesamt + MailsZaehlen(strVerzeichnis, bolRekursiv)\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     SysCmd acSysCmdSetStatus, \"Import wird durchgef&uuml;hrt\"\r\n     rst.MoveFirst\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         strVerzeichnis = rst!Verzeichnis\r\n         lngGroesse = Nz(rst!Groesse, 0)\r\n         bolNeuEinlesen = rst!NeuEinlesen\r\n         bolRekursiv = rst!Rekursiv\r\n         bolVorhandeneLoeschen = rst!VorhandeneLoeschen\r\n         bolAnlagenSpeichern = rst!AnlagenSpeichern\r\n         Import strVerzeichnis, lngAnzahlAktuell, lngAnzahlGesamt, lngGroesse, bolNeuEinlesen, bolRekursiv, _\r\n             bolVorhandeneLoeschen, bolAnlagenSpeichern\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     SysCmd acSysCmdClearStatus\r\n     <span style=\"color:blue;\">MsgBox<\/span> \"Import beendet. Es wurden \" & lngAnzahlAktuell & \"\/\" & lngAnzahlGesamt & \" Mails eingelesen.\"\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 11: Einlesen der Mails beim Starten der Anwendung<\/span><\/b><\/p>\n<p>Dann ruft sie die Funktion <b>MailsZaehlen <\/b>auf, die Sie bereits in &auml;hnlicher Form in den ersten Teilen dieser Beitragsreihe kennen gelernt haben. Diese erwartet den Verzeichnisnamen und die Angabe, ob rekursiv eingelesen werden soll, als Parameter. Die Funktion liest die Mails des angegebenen Verzeichnisses ein und liefert die Anzahl der eingelesenen Mails als Funktionsergebnis zur&uuml;ck. Dieses wird dann direkt zur bereits gespeicherten Anzahl in der Variablen <b>lngAnzahlGesamt <\/b>hinzuaddiert. Nachdem dies f&uuml;r alle Ordner geschehen ist, enth&auml;lt die Variable <b>lngAnzahlGesamt <\/b>die Anzahl der insgesamt einzulesenden Mails f&uuml;r die Angabe in der Statusleiste von Access. Die Prozedur setzt den Datensatzzeiger des Recordsets nun wieder auf den ersten Datensatz zur&uuml;ck und beginnt mit einem erneuten Schleifendurchlauf.<\/p>\n<p>Diesmal speichert sie soweit alle Daten des Recordsets in entsprechenden Variablen und &uuml;bergibt diese der Prozedur <b>Import<\/b>. Auch diese kennen Sie bereits von den vorherigen Teilen der Beitragsreihe &#8211; sie &uuml;bernimmt, gemeinsam mit einigen untergeordneten Routinen, das eigentliche Einlesen der E-Mails. Schlie&szlig;lich gibt die Prozedur noch die Anzahl der eingelesenen E-Mails aus.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Die Beispieldatenbank l&auml;sst sich nat&uuml;rlich beliebig erweitern. Interessant w&auml;re es etwa, ein Feld namens Aktiv zur Tabelle hinzuzuf&uuml;gen, um Ordner tempor&auml;r vom Import auszuklammern.<\/p>\n<p>In einem weiteren Beitrag beschreiben wir schlie&szlig;lich noch, wie Sie die Inhalte der E-Mails direkt von Outlook aus in die Access-Datenbank schreiben k&ouml;nnen &#8211; und zwar direkt nachdem diese dort eingehen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Outlook_III.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{1049F1D2-E96D-4013-B9FE-983D116115FA}\/aiu_997.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Archivierungs-Datenbank f&uuml;r Outlook-Mails kann nun schon Mails importieren und bietet eine Suchfunktion f&uuml;r die importierten Mails an. Au&szlig;erdem k&ouml;nnen Sie die gefundenen E-Mails mit Outlook &ouml;ffnen und darin wiederherstellen. Nun wollen wir die L&ouml;sung noch so erweitern, dass Sie beispielsweise mehrere Ordner in Outlook ausw&auml;hlen k&ouml;nnen, deren E-Mails importiert werden sollen. Au&szlig;erdem soll der Import gleich beim Start der Anwendung gelingen.<\/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,66052015,44000026],"tags":[],"class_list":["post-55000997","post","type-post","status-publish","format-standard","hentry","category-662015","category-66052015","category-Interaktiv"],"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>Outlook-Mails in Access archivieren III - 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_III\/\" \/>\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 III\" \/>\n<meta property=\"og:description\" content=\"Die Archivierungs-Datenbank f&uuml;r Outlook-Mails kann nun schon Mails importieren und bietet eine Suchfunktion f&uuml;r die importierten Mails an. Au&szlig;erdem k&ouml;nnen Sie die gefundenen E-Mails mit Outlook &ouml;ffnen und darin wiederherstellen. Nun wollen wir die L&ouml;sung noch so erweitern, dass Sie beispielsweise mehrere Ordner in Outlook ausw&auml;hlen k&ouml;nnen, deren E-Mails importiert werden sollen. Au&szlig;erdem soll der Import gleich beim Start der Anwendung gelingen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T19:10:59+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/84275f7fd7c04ecdb4555f080eecb3df\" \/>\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_III\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Outlook-Mails in Access archivieren III\",\"datePublished\":\"2020-05-22T19:10:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/\"},\"wordCount\":2338,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/84275f7fd7c04ecdb4555f080eecb3df\",\"articleSection\":[\"2015\",\"5\\\/2015\",\"Interaktiv\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/\",\"name\":\"Outlook-Mails in Access archivieren III - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/84275f7fd7c04ecdb4555f080eecb3df\",\"datePublished\":\"2020-05-22T19:10:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/84275f7fd7c04ecdb4555f080eecb3df\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/84275f7fd7c04ecdb4555f080eecb3df\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/OutlookMails_in_Access_archivieren_III\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Outlook-Mails in Access archivieren III\"}]},{\"@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 III - 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_III\/","og_locale":"de_DE","og_type":"article","og_title":"Outlook-Mails in Access archivieren III","og_description":"Die Archivierungs-Datenbank f&uuml;r Outlook-Mails kann nun schon Mails importieren und bietet eine Suchfunktion f&uuml;r die importierten Mails an. Au&szlig;erdem k&ouml;nnen Sie die gefundenen E-Mails mit Outlook &ouml;ffnen und darin wiederherstellen. Nun wollen wir die L&ouml;sung noch so erweitern, dass Sie beispielsweise mehrere Ordner in Outlook ausw&auml;hlen k&ouml;nnen, deren E-Mails importiert werden sollen. Au&szlig;erdem soll der Import gleich beim Start der Anwendung gelingen.","og_url":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T19:10:59+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/84275f7fd7c04ecdb4555f080eecb3df","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_III\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Outlook-Mails in Access archivieren III","datePublished":"2020-05-22T19:10:59+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/"},"wordCount":2338,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/84275f7fd7c04ecdb4555f080eecb3df","articleSection":["2015","5\/2015","Interaktiv"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/","url":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/","name":"Outlook-Mails in Access archivieren III - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/84275f7fd7c04ecdb4555f080eecb3df","datePublished":"2020-05-22T19:10:59+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/84275f7fd7c04ecdb4555f080eecb3df","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/84275f7fd7c04ecdb4555f080eecb3df"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/OutlookMails_in_Access_archivieren_III\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Outlook-Mails in Access archivieren III"}]},{"@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\/55000997","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=55000997"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000997\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}