{"id":55000129,"date":"2003-12-01T00:00:00","date_gmt":"2020-05-06T15:17:33","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=129"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Adressverwaltung_mit_OutlookSchnittstelle_Teil_2","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/","title":{"rendered":"Adressverwaltung mit Outlook-Schnittstelle, Teil 2"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/46b766325f5b4431bccb6dd58f182ad9\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>In Ausgabe 4\/2003 von Access im Unternehmen haben Sie die Adressverwaltung mit Outlook-Schnittstelle kennen gelernt. Im vorliegenden Beitrag erfahren Sie, wie Sie der Adressverwaltung neben dem Import von Outlook-Adressen einen entsprechenden Export hinzuf&uuml;gen, wie die einzelnen Elemente der Men&uuml;leiste genau funktionieren und wie die Berichte zur Ausgabe von Adressenlisten und Stammbl&auml;ttern zu den einzelnen Eintr&auml;gen der Adressdatenbank aussehen.<\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Auf der beiliegenden Heft-CD finden Sie die Beispieldatenbanken zu der vorliegenden Musterl&ouml;sung unter den Dateinamen Adress97.mdb (Access 97) und Adress00.mdb (Access 2000 und  Access XP). <\/p>\n<p>Nachdem Sie im ersten Teil dieser Beitragsreihe erfahren haben, wie der Import von Outlook-Kontakten in eine Access-Datenbank funktioniert, lernen Sie nun den umgekehrten Weg kennen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die nachfolgend beschriebenen und auch in den Musterl&ouml;sungen enthaltenen Prozeduren und Funktionen &auml;ndern durch den Export von Adressdaten nach Outlook gegebenenfalls bereits vorhandene Daten. Sichern Sie deshalb unbedingt die Datei Outlook.pst, bevor Sie die Beispieldatenbanken ausprobieren. Um sicherzugehen, testen Sie die Funktionalit&auml;t nicht auf Produktivsystemen. <\/p>\n<h2>Beschreibung des Exports<\/h2>\n<p>Die Aufgabe beim Import bestand im Wesentlichen darin, eventuell vorhandene Unternehmensdaten herauszufiltern, in die relational verkn&uuml;pfte Tabelle tblUnternehmen zu schreiben und im Feld UnternehmenID der Tabelle tblAdressen einen entsprechenden Wert f&uuml;r die Verkn&uuml;pfung zum Unternehmensdatensatz anzulegen.<\/p>\n<p>Beim Transport der Adressdaten in die andere Richtung gibt es zwei Besonderheiten: Erstens werden die m&uuml;hselig aufgesplitteten Unternehmensdaten wieder direkt in die einzelnen Kontaktdatens&auml;tze geschrieben.<\/p>\n<p>Die zweite Besonderheit ist, dass es in Outlook durchaus mehrere Ordner zur Speicherung von Kontakten geben kann. Dementsprechend ist vorher festzulegen, in welchem Ordner die zu exportierenden Kontakte gespeichert werden sollen.<\/p>\n<p>Ein &auml;hnliches Problem wie beim Import in die Datenbank ergibt sich auch beim Export, n&auml;mlich die &uuml;berpr&uuml;fung eventuell vorhandener Daten.<\/p>\n<p>Da Outlook mit der EntryID einen eindeutigen Schl&uuml;ssel f&uuml;r jegliche Objekte enth&auml;lt, wird dieser beim Import in die Datenbank in der Tabelle tblAdressen gespeichert.<\/p>\n<p>Beim Exportieren von Daten aus der Datenbank nach Outlook sollen zwei &uuml;berpr&uuml;fungen vorgenommen werden: Erstens nach der EntryID und zweitens nach der Kombination aus Vor- und Nachname des Kontakts. Wie auch beim Import sollen f&uuml;r den Fall des Vorhandenseins des Kontaktes drei M&ouml;glichkeiten vorgesehen werden:<\/p>\n<p><IMG height=\"601\" src=\"..\/fileadmin\/_temp_\/{88517268-1BF9-4916-81A5-D55895AC8F96}\/pic001.png\" width=\"426\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Formular f&uuml;r den Export von Adressdaten nach Outlook<\/span><\/b><\/p>\n<li>&uuml;berschreiben des vorhandenen Datensatzes<\/li>\n<li>Verwerfen des Exports f&uuml;r den aktuellen Datensatz<\/li>\n<li>Synchronisation beziehungsweise Vergleich der beiden Datens&auml;tze<\/li>\n<p>Eine weitere offene Frage ist, ob nur der Zielordner von Outlook nach Duplikaten durchsucht werden soll oder alle Ordner. Der letztere Fall zieht die Frage nach sich, ob bei einem Duplikat eines Kontaktes in einem anderen Ordner als dem Zielordner dieser gel&ouml;scht und der neue Kontakt im Zielordner angelegt werden oder ob der neue Kontakt den bestehenden Kontakt im urspr&uuml;nglichen Ordner ersetzen soll.<\/p>\n<p>Da vermutlich der Gro&szlig;teil der Outlookanwender ohnehin nur einen Kontaktordner verwendet, soll diesen Fragen im vorliegenden Fall aus dem Weg gegangen werden, indem nur der Zielordner untersucht wird.<\/p>\n<h2>Formular zur Steuerung des Exports<\/h2>\n<p>Das Formular aus Bild 1 enth&auml;lt die notwendigen Steuerelemente, um die Einstellungen f&uuml;r den Export vorzunehmen und den Export einzuleiten.<\/p>\n<p>Im oberen Bereich kann der Benutzer den Ordner festlegen, in dem die zu exportierenden Kontakte gespeichert werden sollen. Der zweite Bereich dient der Auswahl der zu exportierenden Adressen. Das Listenfeld ist f&uuml;r eine Mehrfachauswahl ausgelegt.<\/p>\n<p>Im dritten Bereich finden Sie die bereits vom Import bekannten drei M&ouml;glichkeiten, wie die Anwendung im Falle bereits vorhandener Kontakte reagieren soll. Mit einem Mausklick auf die Schaltfl&auml;che Exportieren wird der Export gestartet. Sofern dies nicht zu schnell geht, k&ouml;nnen Sie das Voranschreiten des Exports auf dem Fortschrittsbalken ablesen.<\/p>\n<h2>Funktion desFormulars<\/h2>\n<p>Die Auswahl des Zielordners sowie der zu exportierenden Kontakte beinhaltet keine Besonderheiten und soll daher an diese Stelle nicht weiter beschrieben werden.<\/p>\n<pre>Private Function AdressenExportieren()\r\n    Dim appOutlook As Object\r\n    Dim olNamespace As Object\r\n    Dim olOrdner As Object\r\n    Dim Eintrag As Variant\r\n    Dim ExportEntryID As String\r\n    Dim i As Integer\r\n    Dim AdressID As Integer\r\n    Dim Breitenintervall As Single\r\n    On Error GoTo AdressenExportieren_Err\r\n    If Me.lstAdressen.ItemsSelected.Count = 0 Then\r\n        MsgBox \"Sie haben keine Kontakte ausgew&auml;hlt.\", vbOKOnly + vbExclamation, _\r\n        \"Fehlende Eingabe\"\r\n        Exit Function\r\n    End If\r\n    Set appOutlook = GetObject(, \"Outlook.Application\")\r\n    On Error GoTo 0\r\n    Set olNamespace = appOutlook.GetNamespace(\"MAPI\")\r\n    Set olOrdner = olNamespace.GetFolderFromID(Me.txtEntryID)\r\n    i = 0\r\n    Breitenintervall = Me!recLaenge.Width \/ Me!lstAdressen.ItemsSelected.Count\r\n    For Each Eintrag In Me!lstAdressen.ItemsSelected\r\n        AdressID = Me!lstAdressen.Column(6)\r\n        i = i + 1\r\n        Me!recFortschrittsbalken.Width = i * Breitenintervall\r\n        If Me!lstAdressen.ItemData(Eintrag) = \"\" Then\r\n            ExportEntryID = KontaktVorhandenName(Me!lstAdressen.Column(1), _\r\n                Me!lstAdressen.Column(2), olOrdner)\r\n            If Not ExportEntryID = \"\" Then\r\n                If Me!ogrExport = 1 Then\r\n                    AdresseExportieren AdressID, olOrdner, ExportEntryID, olNamespace\r\n                Else\r\n                    If Me.ogrExport = 3 Then\r\n                        If Synchronisieren(AdressID, ExportEntryID) = True Then\r\n                            AdresseExportieren AdressID, olOrdner, ExportEntryID, _\r\n                                olNamespace\r\n                        End If\r\n                    End If\r\n                End If\r\n            Else\r\n                AdresseExportieren AdressID, olOrdner\r\n            End If\r\n        Else\r\n            ExportEntryID = KontaktVorhandenEntryID(Me!lstAdressen.Column(0), _\r\n                olNamespace, olOrdner)\r\n            If ExportEntryID = \"\" Then\r\n                ExportEntryID = KontaktVorhandenName(Me!lstAdressen.Column(1), _\r\n                    Me!lstAdressen.Column(2), olOrdner)<\/pre>\n<p><b>Quellcode 1 (Teil 1)<\/b><\/p>\n<p>Auch die Anzeige des Fortschrittbalkens ist bereits aus dem ersten Teil dieser Beitragsreihe bekannt.<\/p>\n<p>Interessant ist die Funktion, die durch das Bet&auml;tigen der Schaltfl&auml;che Exportieren aufgerufen wird (s. Quellcode 1).<\/p>\n<p>Die Funktion deklariert zun&auml;chst die ben&ouml;tigten Variablen und &uuml;berpr&uuml;ft anschlie&szlig;end, ob der Anwender &uuml;berhaupt mindestens einen Eintrag aus dem Listenfeld markiert hat. Falls nicht, gibt die Prozedur eine entsprechende Fehlermeldung aus.<\/p>\n<pre>            End If\r\n            If Not ExportEntryID = \"\" Then\r\n                If Me!ogrExport = 1 Then\r\n                    AdresseExportieren AdressID, olOrdner\r\n                Else\r\n                    If Me.ogrExport = 3 Then\r\n                        If Synchronisieren(AdressID, ExportEntryID) = True Then\r\n                            AdresseExportieren AdressID, olOrdner\r\n                        End If\r\n                    End If\r\n                End If\r\n            Else\r\n                AdresseExportieren AdressID, olOrdner\r\n            End If\r\n        End If\r\n    Next Eintrag\r\n    Me!cmdBeenden.Enabled = True\r\n    Exit Function\r\nAdressenExportieren_Err:\r\n    If Err.Number = 429 Then\r\n        Set appOutlook = CreateObject(\"Outlook.Application\")\r\n        Resume Next\r\n    End If\r\nEnd Function<\/pre>\n<p><b>Quellcode 1 (Fortsetzung)<\/b><\/p>\n<p>Anderenfalls versucht die Funktion zun&auml;chst, auf eine bestehende Instanz von Outlook zu verweisen. Ist keine vorhanden, wird &uuml;ber die eigens f&uuml;r diesen Fall angelegte Fehlerbehandlung eine neue Instanz erzeugt.<\/p>\n<p>Die Variablen olNamespace und olFolder erhalten Verweise auf den Namespace MAPI beziehungsweise den im Formular ausgew&auml;hlten Kontaktordner.<\/p>\n<p>Mit einer For Each-Schleife durchl&auml;uft die Funktion alle im Listenfeld markierten Eintr&auml;ge. Innerhalb der Schleife gibt es zwei M&ouml;glichkeiten: Entweder der Kontakteintrag hat bereits eine EntryID oder nicht. Falls nicht, durchsucht die Funktion den gew&auml;hlten Kontaktordner in der Funktion KontaktVorhandenName nach einem Kontakt mit dem im Listenfeld angezeigten Vor- und Nachnamen.<\/p>\n<p>Ist eine EntryID f&uuml;r den Kontakt vorhanden, sucht die Funktion mit Hilfe der Funktion KontaktVorhandenEntryID nach dieser. Sollte dieser Kontakt nicht zuvor aus dieser Outlook.pst-Datei importiert worden sein, und die Funktion KontaktVorhandenEntryID findet keinen entsprechenden Kontakt, wird vorsichtshalber noch die Funktion KontaktVorhandenName verwendet, um nach eventuell vorhandenen Kontakten mit gleichem Vor- und Nachnamen zu suchen.<\/p>\n<pre>Private Function KontaktVorhandenName(Nachname As String, Vorname As String, _\r\n    olOrdner As Object) As String\r\n    Dim olElement As Object\r\n    Set olElement = olOrdner.Items.Find(\"[FirstName] = ''\" & Vorname _\r\n        & \"'' AND [LastName] = ''\" & Nachname & \"''\")\r\n    If Not olElement Is Nothing Then\r\n        KontaktVorhandenName = olElement.EntryID\r\n    End If\r\nEnd Function<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<pre>Private Function KontaktVorhandenEntryID(EntryID As String, olNamespace As Object, _\r\n    olOrdner As Object) As String\r\n    Dim olElement As Object\r\n    Set olElement = olNamespace.GetItemFromID(EntryID)\r\n    If olElement.Parent = olOrdner Then\r\n        If Not olElement Is Nothing Then\r\n            KontaktVorhandenEntryID = olElement.EntryID\r\n        End If\r\n    Else\r\n        KontaktVorhandenEntryID = \"\"\r\n    End If\r\nEnd Function<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p>Der weitere Verlauf ist in beiden Teilen des If Then-Konstrukts gleich: Die Prozedur wertet die eingegebene Option bez&uuml;glich der Vorgehensweise bei vorhandenem Kontakt aus und verwendet die Funktion AdressenExportieren mit unterschiedlichen Parametern, um den Kontakt nach Outlook zu exportieren.<\/p>\n<h3>Suchen von Kontakten nach Namen<\/h3>\n<p>Wenn der zu exportierende Kontakt keinen Eintrag f&uuml;r das Feld EntryID hat, durchsucht die Funktion aus Quellcode 2 den Zielordner nach einem Kontakt mit dem gleichen Vor- und Nachnamen. Dabei werden als Parameter der Vor- und der Nachname sowie der Zielordner &uuml;bergeben.<\/p>\n<p>Die Suche erfolgt &uuml;ber die Methode Find der Items-Auflistung des Zielordners. Die Syntax des Kriteriums entspricht der bei Access-Filtern verwendeten Syntax. Falls ein entsprechender Eintrag gefunden wird, gibt die Funktion dessen EntryID zur&uuml;ck.<\/p>\n<h3>Suchen von Kontakten nach EntryID<\/h3>\n<p><!--30percent--><\/p>\n<p>Wenn das Feld EntryID des zu exportierenden Kontaktes einen Wert enth&auml;lt, ruft die Prozedur cmdExportieren_Click zun&auml;chst die Funktion KontaktVorhandenEntryID auf. Die Funktion erwartet als Parameter die EntryID, das Namespace-Objekt und den Zielordner. Sie verwendet die Methode GetItemFromID des Namespace-Objektes, um einen Verweis auf den gew&uuml;nschten Kontakt herzustellen. Die Funktion durchsucht allerdings den gesamten Namespace und nicht nur den Zielordner (s. Quellcode 3).<\/p>\n<p>Daher &uuml;berpr&uuml;fen Sie noch, ob das Parent-Element des Kontaktes &#8211; in dem Fall der Ordner, in dem es sich befindet &#8211; mit dem &uuml;bergebenen Zielordner identisch ist.<\/p>\n<pre>Private Function AdresseExportieren(AdressID As Integer, olOrdner As Object, _\r\n    Optional EntryID As String, Optional olNamespace As Object)\r\n    Dim olElement As Outlook.ContactItem\r\n    Dim db As Database\r\n    Dim rstAdressen As Recordset\r\n    If IsMissing(EntryID) Or EntryID = \"\" Then\r\n        Set olElement = olOrdner.Items.Add(olContactItem)\r\n    Else\r\n        Set olElement = olNamespace.GetItemFromID(EntryID)\r\n    End If\r\n    Set db = CurrentDb\r\n    Set rstAdressen = db.OpenRecordset(\"SELECT * FROM tblAdressen WHERE AdressID = \" _\r\n        & AdressID, dbOpenDynaset)\r\n    olElement.Title = Nz(DLookup(\"Anrede\", \"tblAnreden\", \"AnredeID = \" _\r\n        & rstAdressen!AnredeID), \"\")\r\n    olElement.FirstName = Nz(rstAdressen!Vorname, \"\")\r\n    olElement.LastName = Nz(rstAdressen!Nachname, \"\")\r\n    olElement.HomeAddressStreet = Nz(rstAdressen!Strasse, \"\")\r\n    olElement.HomeAddressPostalCode = Nz(rstAdressen!PLZ, \"\")\r\n    olElement.HomeAddressCity = Nz(rstAdressen!Ort, \"\")\r\n    olElement.HomeTelephoneNumber = Nz(rstAdressen!Telefon, \"\")\r\n    olElement.HomeFaxNumber = Nz(rstAdressen!Telefax, \"\")\r\n    olElement.MobileTelephoneNumber = Nz(rstAdressen!Mobil, \"\")\r\n    olElement.Email1Address = Nz(rstAdressen!EMail, \"\")\r\n    olElement.WebPage = Nz(rstAdressen!Internetadresse, \"\")\r\n    olElement.Gender = Nz(rstAdressen!GeschlechtID, 0)\r\n    olElement.Categories = Nz(DLookup(\"Kategorie\", \"tblKategorien\", \"KategorieID = \" _\r\n        & Nz(rstAdressen!KategorieID, 0)), \"\")\r\n    olElement.Birthday = Nz(rstAdressen!Geburtsdatum, 0)\r\n    olElement.CompanyName = Nz(DLookup(\"Unternehmen\", \"tblUnternehmen\", _\r\n        \"UnternehmenID = \" & Nz(rstAdressen!UnternehmenID, 0)), \"\")\r\n    olElement.Department = Nz(rstAdressen!Abteilung, \"\")\r\n    olElement.JobTitle = Nz(DLookup(\"Position\", \"tblPositionen\", \"PositionID = \" _\r\n        & Nz(rstAdressen!PositionID, 0)), \"\")\r\n    olElement.BusinessTelephoneNumber = Nz(rstAdressen!TelefonGeschaeftlich, \"\")\r\n    olElement.BusinessFaxNumber = Nz(rstAdressen!TelefaxGeschaeftlich, \"\")\r\n    olElement.Email2Address = Nz(rstAdressen!EMailGeschaeftlich, \"\")\r\n    olElement.Save\r\n    rstAdressen.Edit\r\n    rstAdressen!EntryID = olElement.EntryID\r\n    rstAdressen.Update\r\nEnd Function<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<p>Falls ja, wird die EntryID als Best&auml;tigung an die aufrufende Prozedur zur&uuml;ckgegeben. Falls nein, erfolgt die R&uuml;ckgabe einer leeren Zeichenkette.<\/p>\n<h3>Exportieren der Kontaktdaten<\/h3>\n<p>Die Funktion AdresseExportieren dient zum Exportieren eines einzelnen Eintrags der Tabelle tblAdressen in den ausgew&auml;hlten Kontaktordner von Outlook (s. Quellcode 4).<\/p>\n<p>Sie wird von der Funktion AdressenExportieren aufgerufen (beachten Sie den feinen Unterschied der Benennung der Funktionen) und erwartet zwischen zwei und vier Parameter. Die beiden Parameter AdressID und olOrdner sind Pflicht. Sie geben an, welcher Adressdatensatz in welchen Outlookordner exportiert werden soll.<\/p>\n<p>Der Parameter EntryID wird nur &uuml;bergeben, wenn der Datensatz eine EntryID enth&auml;lt, die auch in Outlook bereits vorhanden ist. Damit die Funktion AdresseExportieren schnell auf diesen Eintrag zugreifen kann, wird das bereits gef&uuml;llte Namespace-Objekt olNamespace mit &uuml;bergeben. &uuml;ber dessen Funktion GetItemFromID und die EntryID kann die Funktion schnell auf den zu &uuml;berschreibenden Kontakt zugreifen.<\/p>\n<p>Nach dem Deklarationsteil &uuml;berpr&uuml;ft die Funktion zun&auml;chst, ob der Parameter EntryID &uuml;bergeben wurde. Falls ja, wird der entsprechende Eintrag des Outlookordners der Variablen olElement zugewiesen, falls nein, wird ein neuer Eintrag erzeugt.<\/p>\n<p>Zur Pr&uuml;fung des Vorhandenseins des optional zu &uuml;bergebenden Parameters wird die Funktion IsMissing verwendet.<\/p>\n<p>Anschlie&szlig;end &ouml;ffnet die Funktion die Datensatzgruppe rstAdressen und weist ihr den Datensatz aus der Tabelle tblAdressen mit der &uuml;bergebenen AdressID zu.<\/p>\n<p>Die nachfolgenden Anweisungen tragen alle Informationen des Adressdatensatzes in das Kontaktelement ein. Das Kontaktelement wird gespeichert, damit dem Element eine EntryID zugewiesen wird, falls noch keine vorhanden ist.<\/p>\n<p>Das ist vor allem f&uuml;r den nachfolgenden Schritt wichtig, in dem die EntryID des Adressdatensatzes der Datenbank der aktuellen EntryID des Kontaktes in Outlook angepasst wird.<\/p>\n<p>Auf diese Weise stellt die Funktion eine lose Verkn&uuml;pfung zwischen dem Adressdatensatz der Tabelle und dem Kontaktelement in Outlook her.<\/p>\n<p>Die Anwendung enth&auml;lt drei Berichte zur Ausgabe von Adressenlisten, Personen- und Unternehmendatenbl&auml;ttern.<\/p>\n<h2>Bericht zur Ausgabe vonAdressenlisten<\/h2>\n<p>Der erste Bericht dient der Ausgabe einer Adressenliste. Wenn der Bericht &uuml;ber den Men&uuml;eintrag Berichte\/Adressenliste ge&ouml;ffnet wird, zeigt er die komplette Adressenliste an. Um nur die gew&uuml;nschten Eintr&auml;ge der Adressenlisten anzuzeigen, kann das Formular frmAdressenliste verwendet werden. Dort k&ouml;nnen Sie zun&auml;chst nach den gew&uuml;nschten Kriterien filtern und anschlie&szlig;end den Bericht mit der Schaltfl&auml;che Liste anzeigen &ouml;ffnen.<\/p>\n<p>Eine Ausnahme liegt vor, wenn der Bericht &uuml;ber den Men&uuml;eintrag ge&ouml;ffnet wird, das Formular aber ebenfalls offen ist. In dem Fall werden trotzdem die in dem Formular festgelegten Kriterien verwendet.<\/p>\n<h3>Alle oder nicht alle<\/h3>\n<p>Der Bericht &uuml;berpr&uuml;ft beim &ouml;ffnen, ob das Formular frmAdressenliste ge&ouml;ffnet ist. Das geschieht mit der Prozedur aus Quellcode 5, die durch das Ereignis Beim &ouml;ffnen des Berichtes ausgel&ouml;st wird. Wenn das Formular ge&ouml;ffnet wird, verwendet der Bericht nicht die voreingestellte Datenherkunft, sondern die Datenherkunft des Formulars frmAdressenliste.<\/p>\n<h2>Aufbau des Berichts<\/h2>\n<p>Der Bericht besteht aus drei Bereichen, dem Seitenkopf- und Fu&szlig; sowie dem Detailbereich.<\/p>\n<pre>Private Sub Report_Open(Cancel As Integer)\r\n    If IstFormularGeoeffnet(\"frmAdressenliste\") Then\r\n        Me.RecordSource = _\r\n            Forms!frmAdressenliste!lstAdressen.RowSource\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<p>Der Seitenkopf enth&auml;lt die Haupt&uuml;berschrift sowie die &uuml;berschriften der einzelnen Spalten des tabellarischen Berichts.<\/p>\n<p>Der Seitenfu&szlig; enth&auml;lt zwei Steuerelemente zur Anzeige von Datum und Seitenzahl. Das Textfeld txtDatum enth&auml;lt den folgenden Ausdruck als Steuerelementinhalt:<\/p>\n<pre>=Datum()<\/pre>\n<p>Die Seitenzahl wird im Textfeld txtSeiten angezeigt:<\/p>\n<pre>=\"Seite \" & [Seite] & \"\/\" & [Seiten]<\/pre>\n<p>Im Detailbereich befinden sich die f&uuml;r eine Adressenliste notwendigen Daten wie Name, Adressdaten sowie Telefonnummern, E-Mailadresse und Internetadresse (siehe Bild 2).<\/p>\n<h3>Privat und gesch&auml;ftlich<\/h3>\n<pre>SELECT AdressID, Bezeichnung, Strasse, PLZ, Ort, Typ, Typbezeichnung, Telefon, \r\n    Telefax, Mobil, EMail, '''' AS Internetadresse FROM qryPersonenGeschaeftlich\r\nUNION\r\nSELECT AdressID, Bezeichnung, Strasse, PLZ, Ort, Typ, Typbezeichnung, Telefon, \r\n    Telefax, Mobil, EMail, Internetadresse FROM qryPersonenPrivat\r\nUNION\r\nSELECT AdressID, Bezeichnung, Strasse, PLZ, Ort, Typ, Typbezeichnung, Telefon,\r\n    Telefax, Mobil, EMail, Internetadresse FROM qryUnternehmen;<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<p><IMG height=\"110\" src=\"..\/fileadmin\/_temp_\/{88517268-1BF9-4916-81A5-D55895AC8F96}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Entwurfsansicht des Berichts rptAdressenliste<\/span><\/b><\/p>\n<p>Die Frage, wo in dem Bericht sich denn eventuell vorhandene gesch&auml;ftliche Daten befinden, erledigt sich durch einen Blick auf die Datenherkunft.<\/p>\n<p>Diese enth&auml;lt eine Union-Abfrage, die drei Abfragen zusammenf&uuml;hrt. Da Union-Abfragen leider nicht in der herk&ouml;mmlichen Entwurfsansicht von Abfragen angezeigt werden k&ouml;nnen, finden Sie den entsprechenden SQL-Ausdruck in Quellcode 6.<\/p>\n<p>Der Bericht zeigt die privaten und gesch&auml;ftlichen Daten einer Person dann in zwei Zeilen an (siehe Bild 3). Zur Unterscheidung enth&auml;lt jede Zeile in der Spalte Art entweder den Wert Unternehmen, Person, privat oder Person, gesch&auml;ftlich.<\/p>\n<h2>Bericht zur Ausgabe vonPersonendaten<\/h2>\n<p>Der Bericht repDatenblattPerson enth&auml;lt Informationen &uuml;ber eine Person.<\/p>\n<p>Dazu geh&ouml;ren die &uuml;blichen Daten inklusive der gesch&auml;ftlichen Daten.<\/p>\n<p><IMG height=\"325\" src=\"..\/fileadmin\/_temp_\/{88517268-1BF9-4916-81A5-D55895AC8F96}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Zwei Zeilen f&uuml;r private und gesch&auml;ftliche Daten<\/span><\/b><\/p>\n<p><IMG height=\"636\" src=\"..\/fileadmin\/_temp_\/{88517268-1BF9-4916-81A5-D55895AC8F96}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Entwurfsansicht des Berichts rptDatenblattPerson<\/span><\/b><\/p>\n<p>Bild 4 zeigt den Entwurf des Berichts rptDatenblattPerson mit den drei Bereichen Pers&ouml;nliche Daten, Berufliche Daten und Bemerkungen. Dort ist au&szlig;erdem zu erkennen, wie der Name der Person in einem Feld angezeigt wird.<\/p>\n<h2>Anzeige von PLZ und Ort<\/h2>\n<p>Da Adressdaten in der Regel niemals vollst&auml;ndig sind, weil entweder die PLZ oder andere Daten fehlen, werden im Bericht entsprechende Vorsichtsma&szlig;nahmen getroffen, die fehlende Daten davon abhalten, das Layout zu zerst&ouml;ren.<\/p>\n<p>Die Felder, die zusammengesetzte Informationen wie zum Beispiel PLZ und Ort der privaten oder gesch&auml;ftlichen Adresse enthalten, erhalten daher folgenden Ausdruck:<\/p>\n<pre>=[tblAdressen.PLZ] & Wenn(L&auml;nge([tblAdressen.PLZ])&gt;0;\" \";\"\") & [tblAdressen.Ort]<\/pre>\n<p>F&uuml;r die gesch&auml;ftlichen Daten m&uuml;ssen Sie die Bezeichnung tblAdressen durch tblUnternehmen ersetzen. <\/p>\n<h3>Datenherkunft des Berichts<\/h3>\n<p>Die Datenherkunft des Berichts enth&auml;lt ann&auml;hernd alle Tabellen der Datenbank, da auch alle verkn&uuml;pften Daten wie Geschlecht, Unternehmensbezeichnung, Kontaktkategorie und so weiter angezeigt werden.<\/p>\n<p>Wichtig ist, dass f&uuml;r die Abfrage alle Beziehungen in so genannte Right Joins umgewandelt werden. Wie Bild 5 zeigt, enthalten solche Abfragen alle Datens&auml;tze der &#8222;linken&#8220; Tabelle und nur die Informationen aus den &#8222;rechten&#8220; Tabellen, wenn diese vorhanden sind.<\/p>\n<p>Wenn Sie dies nicht einstellen, sondern mit normalen Joins arbeiten, werden nur die Datens&auml;tze angezeigt, f&uuml;r die es in allen Tabellen entsprechende Datens&auml;tze gibt.<\/p>\n<p>Da Outlook aber keinen Wert auf Vollst&auml;ndigkeit der Adressdaten legt und beim Import nicht automatisch alle nicht vorhandenen Informationen mit Standardwerten belegt werden k&ouml;nnen, fehlen hier und da einige Informationen.<\/p>\n<pre>Private Sub cmdDatenblatt_Click()\r\n    DoCmd.OpenReport \"repDatenblattPerson\", _        View:=acViewPreview, _\r\n        WhereCondition:=\"AdressID = \" & Me.AdressID\r\nEnd Sub<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<p><IMG height=\"371\" src=\"..\/fileadmin\/_temp_\/{88517268-1BF9-4916-81A5-D55895AC8F96}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  &auml;ndern der Verkn&uuml;pfungseigenschaften in der Datenherkunft<\/span><\/b><\/p>\n<p><IMG height=\"291\" src=\"..\/fileadmin\/_temp_\/{88517268-1BF9-4916-81A5-D55895AC8F96}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Entwurfsansicht des Berichtes rptDatenblattUnternehmen<\/span><\/b><\/p>\n<h3>Anzeige des Berichtes repDatenblattPerson<\/h3>\n<p>Die Anzeige erfolgt entweder &uuml;ber den Men&uuml;eintrag Berichte\/Datenbl&auml;tter Personen oder &uuml;ber die Schaltfl&auml;che Datenblatt des Formulars frmPersonen.<\/p>\n<p>Der Aufruf im Men&uuml; &ouml;ffnet den Bericht ohne Filter, sodass alle Personendatens&auml;tze angezeigt werden. Die Schaltfl&auml;che cmdDatenblatt hingegen &uuml;bergibt noch eine Bedingung, wie Quellcode 7 zeigt.<\/p>\n<h2>Bericht zur Ausgabe von Unternehmensdaten<\/h2>\n<p>Der Bericht zur Ausgabe der Stammdaten von Unternehmen zeigt das jeweilige Unternehmen inklusive der in der Datenbank vorhandenen Mitarbeiter dieses Unternehmens an.<\/p>\n<p>Dazu muss im Feld UnternehmenID der Tabelle tblAdressen das entsprechende Unternehmen ausgew&auml;hlt sein. <\/p>\n<p>Bild 6 zeigt die Entwurfsansicht des Berichtes. Der Bericht wird auf zwei unterschiedliche Arten aufgerufen:<\/p>\n<li>&uuml;ber den Eintrag Datenbl&auml;tter Unternehmen im Men&uuml; Berichte<\/li>\n<li>&uuml;ber die Schaltfl&auml;che Datenblatt des Formulars frmUnternehmen<\/li>\n<p>Beim Aufruf &uuml;ber die Men&uuml;leiste soll der Bericht im Gegensatz zu dem Aufruf &uuml;ber das Formular frmUnternehmen alle Unternehmen anzeigen.<\/p>\n<pre>Public Sub MenueErstellen(verOutlook As Integer)\r\n    Dim cbr As Object\r\n    MenueleisteLoeschen \"Adressverwaltung\"\r\n    MenueleisteErstellen \"Adressverwaltung\", msoBarTop, True\r\n    Set cbr = CommandBars(\"Adressverwaltung\")\r\n    cbr.Visible = True\r\n    UntermenueErstellen cbr, \"&Datei\", \"Datei\", False\r\n    UntermenueeintragErstellen cbr.Controls(\"&Datei\"), msoButtonIconAndCaption, _\r\n        \"D&rucken\", \"Drucken\", \"=Drucken()\", False, 4\r\n    If verOutlook &gt; 8 Then\r\n        UntermenueeintragErstellen cbr.Controls(\"&Datei\"), msoButtonCaption, _\r\n            \"&Import von Outlook\", \"ImportVonOutlook\", \"=ImportOutlook()\", True, 4\r\n        UntermenueeintragErstellen cbr.Controls(\"&Datei\"), msoButtonCaption, _\r\n            \"&Export nach Outlook\", \"ExportNachOutlook\", \"=ExportOutlook()\", False, 4\r\n    End If\r\n    UntermenueeintragErstellen cbr.Controls(\"&Datei\"), msoButtonCaption, \"&Beenden\", _\r\n        \"Beenden\", \"=Beenden()\", True, 4\r\n    UntermenueErstellen cbr, \"&Stammdaten\", \"Stammdaten\", False\r\n    UntermenueeintragErstellen cbr.Controls(\"&Stammdaten\"), msoButtonIconAndCaption, _\r\n        \"&Personen\", \"Personen\", \"=StammdatenPersonen()\", False, 2131\r\n    ''weitere Untermen&uuml;punkte\r\n    UntermenueErstellen cbr, \"&Berichte\", \"Berichte\", False\r\n    UntermenueeintragErstellen cbr.Controls(\"&Berichte\"), msoButtonIconAndCaption, _\r\n        \"&Adressenliste\", \"Adressenliste\", \"=BerichteAdressenliste()\", False\r\n    ''weitere Untermen&uuml;punkte\r\n    MenueeintragErstellen cbr, \"&Detailsuche\", \"Detailsuche\", \"=Detailsuche()\", False\r\n    KombinationsfeldErstellen cbr, \"SELECT ''&lt;Person oder Unternehmen ausw&auml;hlen&gt;'' \" _\r\n        & \"AS Kombinationsfeldeintrag FROM qryAdressen UNION SELECT Bezeichnung AS \" _\r\n        & \"Kombinationsfeldeintrag FROM qryAdressenTopTen\", \"&TopTen\", \"TopTen\", _\r\n        300, \"=TopTenAuswahl()\", msoComboNormal\r\n    MenueeintragErstellen cbr, \"&\", \"Hilfe\", \"=Hilfe()\", True\r\n    MenuepunktDeaktivieren cbr.Controls(\"&Datei\").Controls(\"D&rucken\")\r\nEnd Sub<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<p>Da also mitunter mehrere Unternehmen samt Mitarbeitern anzuzeigen sind, muss eine Gruppierung &uuml;ber die Unternehmen festgelegt werden, deren Fu&szlig;bereich nach jedem Datensatz der Gruppierung einen Seitenumbruch bewirkt (siehe Bild 6).<\/p>\n<p>Die Adressverwaltung enth&auml;lt eine professionelle Benutzerf&uuml;hrung &uuml;ber eine benutzerdefinierte Men&uuml;leiste.<\/p>\n<p>Eine solche Men&uuml;leiste hat den Vorteil, dass alle wichtigen Funktionen beziehungsweise Dialoge immer zur Verf&uuml;gung stehen und damit schnell aufgerufen werden k&ouml;nnen.<\/p>\n<p><IMG height=\"0\" src=\"..\/fileadmin\/_temp_\/{88517268-1BF9-4916-81A5-D55895AC8F96}\/pic007.png\" width=\"0\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Men&uuml;leiste der Adressverwaltung<\/span><\/b><\/p>\n<p>Die Men&uuml;leiste wird beim Aufrufen der Datenbank erstellt und beim Schlie&szlig;en automatisch wieder gel&ouml;scht. So wird der Normalzustand wieder hergestellt. Anderenfalls w&uuml;rden diesbez&uuml;glich beim Aufruf anderer Datenbanken nicht erwartete Men&uuml;konfigurationen auftreten (zum Beispiel fehlendes Hauptmen&uuml; und so weiter).<\/p>\n<h3>Hinweis<\/h3>\n<p>Die Erkl&auml;rung der wesentlichen Funktionalit&auml;t der hier verwendeten benutzerdefinierten Men&uuml;leisten finden Sie im Beitrag Dynamische Men&uuml;s mit VBA in Ausgabe 4\/2003 von Access im Unternehmen. Die dort beschriebenen Funktionen, mit denen Sie in wenigen Zeilen ein komplettes benutzerdefiniertes Men&uuml; zusammenstellen k&ouml;nnen, sind in der jeweils aktuellen Version auf  www.access-im-unternehmen.de zu finden. <\/p>\n<pre>Private Sub Form_Unload(Cancel As _    Integer)\r\n    DoCmd.ShowToolbar \"Menu Bar\"\r\n    DoCmd.ShowToolbar \"Database\"\r\n    DoCmd.SetWarnings True\r\nEnd Sub<\/pre>\n<p><b>Quellcode 9<\/b><\/p>\n<h2>Erstellen des Men&uuml;s<\/h2>\n<p>Mit den bekannten Funktionen zum Erstellen benutzerdefinierter Men&uuml;leisten per VBA k&ouml;nnen Sie leicht eine Men&uuml;leiste zusammenstellen. F&uuml;r die Men&uuml;leiste der Adressverwaltung (siehe Bild 7) verwenden Sie beispielsweise die Prozedur aus Quellcode 8.<\/p>\n<p>Die Aufrufe der Funktionen zum Erstellen der einzelnen Elemente der Men&uuml;leiste k&ouml;nnen Sie nat&uuml;rlich beliebig anlegen, wenn Sie keine Untermen&uuml;eintr&auml;ge anlegen, solange noch kein passender Hauptmen&uuml;eintrag vorhanden ist.<\/p>\n<p>So wird im Beispiel der Parameter verOutlook &uuml;bergeben, der die Version der aktuell installierten Outlook-Anwendung &uuml;bergibt.<\/p>\n<p>Wenn diese &auml;lter als Outlook 2000 ist, k&ouml;nnen beispielsweise der Im- und Export nicht durchgef&uuml;hrt werden, wodurch auch die entsprechenden Eintr&auml;ge im Men&uuml; keinen Sinn machen. Diese werden dann gegebenenfalls deaktiviert.<\/p>\n<p>Die meisten Funktionsaufrufe enthalten einen Parameter, der wiederum wie ein Funktionsaufruf aussieht. Dabei handelt es sich tats&auml;chlich um Funktionsaufrufe, und zwar um jene, die beim Bet&auml;tigen der entsprechenden Men&uuml;befehle ausgel&ouml;st werden sollen.<\/p>\n<p>Am besten f&uuml;gen Sie diese Funktionen dem gleichen Modul hinzu, in dem sich auch die Funktion MenueErstellen befindet.<\/p>\n<p>Die Funktion MenueErstellen wird beim &ouml;ffnen des Formulars frmIntro gestartet, das wiederum in den Start-Eigenschaften der Datenbank als aufzurufendes Formular angegeben ist.<\/p>\n<h3>Wiederherstellen des alten Zustandes<\/h3>\n<p>Das Formular frmIntro enth&auml;lt eine Prozedur, die durch das Ereignis Beim Entladen ausgel&ouml;st wird. Die Prozedur zeigt die beiden &uuml;blicherwei-se vorhandenen Men&uuml;leisten Menu Bar und Database wieder an (s. Quellcode 9).<\/p>\n<pre>Private Sub Report_Activate()\r\n    MenuepunktAktivieren Application.CommandBars _        (\"Adressverwaltung\").Controls(\"&Datei\").Controls(\"D&rucken\")\r\n    MenuepunktAktivieren Application.CommandBars _        (\"SymboleAdressverwaltung\").Controls(\"D&rucken\")\r\nEnd Sub<\/pre>\n<p><b>Quellcode 10<\/b><\/p>\n<pre>Private Sub Report_Deactivate()\r\n    MenuepunktDeaktivieren Application.CommandBars _        (\"Adressverwaltung\").Controls(\"&Datei\").Controls(\"D&rucken\")\r\n    MenuepunktDeaktivieren Application.CommandBars _\r\n        (\"SymboleAdressverwaltung\").Controls(\"D&rucken\")\r\nEnd Sub<\/pre>\n<p><b>Quellcode 11<\/b><\/p>\n<h2>Der Trick: Formular verstecken<\/h2>\n<p>Damit die Men&uuml;leisten auch beim Beenden der Datenbankanwendung wieder hergestellt werden, schalten Sie einfach das Formular, das die Prozedur zum Wiederherstellen des alten Zustandes enth&auml;lt, auf unsichtbar.<\/p>\n<p>Mit dem Schlie&szlig;en der Anwendung wird dann auch automatisch dieses Formular geschlossen und damit auch der Standardzustand bez&uuml;glich der Men&uuml;leisten wiederhergestellt.<\/p>\n<h2>An- und Ausschalten der Drucken-Schaltfl&auml;che<\/h2>\n<p>Die Drucken-Schaltfl&auml;che soll nur angezeigt werden, wenn ein Bericht aktiv ist. Aus dieser Forderung l&auml;sst sich leicht ableiten, dass hier die beiden Ereigniseigenschaften Bei Aktivieren und Bei Deaktivieren zum Einsatz kommen. <\/p>\n<p>Dementsprechend legen Sie f&uuml;r jeden Bericht, der eventuell ausgedruckt werden soll, die beiden Ereignisprozeduren aus Quellcode 10 und 11 an. Die Ereignisprozeduren aktivieren und deaktivieren jeweils den Eintrag im Men&uuml; Datei als auch die einzige Schaltfl&auml;che der Symbolleiste.<\/p>\n<p>Mit der nun vorliegenden Version der Adressverwaltung k&ouml;nnen Sie Adressen von Personen und Unternehmen pflegen, Kontakte zwischen der Adressverwaltung und Outlook hin- und herschieben und Berichte mit Adressen und Stammdaten drucken.<\/p>\n<p>Die Adressverwaltung kann als Grundlage f&uuml;r viele weitere Anwendungen dienen, die ebenfalls Adressen verwenden. Es muss nicht f&uuml;r jede Anwendung eine eigene Adressverwaltung erstellt werden, wenn sich eine bestehende L&ouml;sung vielfach verwenden l&auml;sst.<\/p>\n<p>Ein gutes Beispiel hierf&uuml;r ist die ebenfalls in dieser Ausgabe vorgestellte Musterl&ouml;sung Briefe erstellen und verwalten.<\/p>\n<p>Die vorliegende Musterl&ouml;sung wird in Zukunft weiterentwickelt und steht &#8211; wenn auch nicht jede &auml;nderung in einem Beitrag beschrieben werden kann &#8211; f&uuml;r alle Abonnenten unter www.access-im-unternehmen.de zum Download bereit.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Teil dieses Beitrags in Access im Unternehmen haben Sie die Adressverwaltung mit Outlook-Schnittstelle kennen gelernt. Im vorliegenden Beitrag erfahren Sie, wie Sie der Adressverwaltung neben dem Import von Outlook-Adressen einen entsprechenden Export hinzuf&uuml;gen, wie die einzelnen Elemente der Men&uuml;leiste genau funktionieren und wie die Berichte zur Ausgabe von Adressenlisten und Stammbl&auml;ttern zu den einzelnen Eintr&auml;gen der Adressdatenbank aussehen.<\/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":[662003,66062003,44000027,44000033],"tags":[],"class_list":["post-55000129","post","type-post","status-publish","format-standard","hentry","category-662003","category-66062003","category-Loesungen","category-Outlook"],"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>Adressverwaltung mit Outlook-Schnittstelle, Teil 2 - 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\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Adressverwaltung mit Outlook-Schnittstelle, Teil 2\" \/>\n<meta property=\"og:description\" content=\"Im ersten Teil dieses Beitrags in Access im Unternehmen haben Sie die Adressverwaltung mit Outlook-Schnittstelle kennen gelernt. Im vorliegenden Beitrag erfahren Sie, wie Sie der Adressverwaltung neben dem Import von Outlook-Adressen einen entsprechenden Export hinzuf&uuml;gen, wie die einzelnen Elemente der Men&uuml;leiste genau funktionieren und wie die Berichte zur Ausgabe von Adressenlisten und Stammbl&auml;ttern zu den einzelnen Eintr&auml;gen der Adressdatenbank aussehen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:33+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/46b766325f5b4431bccb6dd58f182ad9\" \/>\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=\"20\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Adressverwaltung mit Outlook-Schnittstelle, Teil 2\",\"datePublished\":\"2020-05-06T15:17:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/\"},\"wordCount\":3081,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/46b766325f5b4431bccb6dd58f182ad9\",\"articleSection\":[\"2003\",\"6\\\/2003\",\"L\u00f6sungen\",\"Outlook\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/\",\"name\":\"Adressverwaltung mit Outlook-Schnittstelle, Teil 2 - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/46b766325f5b4431bccb6dd58f182ad9\",\"datePublished\":\"2020-05-06T15:17:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/46b766325f5b4431bccb6dd58f182ad9\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/46b766325f5b4431bccb6dd58f182ad9\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Adressverwaltung mit Outlook-Schnittstelle, Teil 2\"}]},{\"@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":"Adressverwaltung mit Outlook-Schnittstelle, Teil 2 - 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\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/","og_locale":"de_DE","og_type":"article","og_title":"Adressverwaltung mit Outlook-Schnittstelle, Teil 2","og_description":"Im ersten Teil dieses Beitrags in Access im Unternehmen haben Sie die Adressverwaltung mit Outlook-Schnittstelle kennen gelernt. Im vorliegenden Beitrag erfahren Sie, wie Sie der Adressverwaltung neben dem Import von Outlook-Adressen einen entsprechenden Export hinzuf&uuml;gen, wie die einzelnen Elemente der Men&uuml;leiste genau funktionieren und wie die Berichte zur Ausgabe von Adressenlisten und Stammbl&auml;ttern zu den einzelnen Eintr&auml;gen der Adressdatenbank aussehen.","og_url":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:33+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/46b766325f5b4431bccb6dd58f182ad9","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"20\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Adressverwaltung mit Outlook-Schnittstelle, Teil 2","datePublished":"2020-05-06T15:17:33+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/"},"wordCount":3081,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/46b766325f5b4431bccb6dd58f182ad9","articleSection":["2003","6\/2003","L\u00f6sungen","Outlook"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/","url":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/","name":"Adressverwaltung mit Outlook-Schnittstelle, Teil 2 - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/46b766325f5b4431bccb6dd58f182ad9","datePublished":"2020-05-06T15:17:33+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/46b766325f5b4431bccb6dd58f182ad9","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/46b766325f5b4431bccb6dd58f182ad9"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Adressverwaltung_mit_OutlookSchnittstelle_Teil_2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Adressverwaltung mit Outlook-Schnittstelle, Teil 2"}]},{"@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\/55000129","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=55000129"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000129\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}