{"id":55001291,"date":"2021-04-01T00:00:00","date_gmt":"2021-07-31T10:17:44","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1291"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Kunde_zu_einer_EMail_oeffnen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/","title":{"rendered":"Kunde zu einer E-Mail &ouml;ffnen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/feae8ffd782b44a19f91875ec49708a2\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Viele Access-Benutzer d&uuml;rften, wenn Sie schon das Office-Paket auf dem Rechner haben, auch Outlook nutzen &#8211; zumindest, um E-Mails zum empfangen, zu senden und zu bearbeiten. Vielen fehlt dabei die M&ouml;glichkeit einer st&auml;rkeren Interaktion zwischen Access und Outlook, beispielsweise bei Verwendung einer Kundenverwaltung. Eine pfiffige M&ouml;glichkeit w&auml;re es, beim Anzeigen einer E-Mail von einem bestimmten Kunden direkt den Kundendatensatz in der Kundenverwaltung zu &ouml;ffnen. Dies sollte dann auch noch auf m&ouml;glichst einfache Art und Weise geschehen, beispielsweise per Tastenkombination. Wie das gelingt, zeigt der vorliegende Beitrag.<\/b><\/p>\n<p>In einem anderen Beitrag mit dem Titel <b>Outlook-Mails per Tastenkombination verschieben <\/b>(<b>www.access-im-unternehmen.de\/1290<\/b>) haben wir bereits gezeigt, wie Sie Aktionen f&uuml;r die aktuell markierte E-Mail per Tastenkombination ausf&uuml;hren k&ouml;nnen. <\/p>\n<p>Im vorliegenden Beitrag wollen wir die Verbindung zwischen der dort beschriebenen reinen Outlook-Technik und Access herstellen. Dazu wollen wir, wenn der Benutzer eine bestimmte Tastenkombination f&uuml;r die aktuell angezeigte E-Mail bet&auml;tigt, die folgenden Schritte ausf&uuml;hren:<\/p>\n<ul>\n<li>Die E-Mail-Adresse des Absenders dieser E-Mail ermitteln,<\/li>\n<li>pr&uuml;fen, ob die Kundendatenbank bereits ge&ouml;ffnet ist und diese gegebenenfalls &ouml;ffnen, wobei dann die E-Mail-Adresse &uuml;bergeben werden soll und<\/li>\n<li>den Kunden mit der betreffenden E-Mail-Adresse im Kunden-Formular anzeigen.<\/li>\n<\/ul>\n<p>Ob die Kunden-Datenbank bereits ge&ouml;ffnet ist oder nicht bringt noch eine wichtige Unterscheidung mit sich: Wenn sie noch nicht ge&ouml;ffnet ist, haben wir es etwas einfacher. Wir brauchen die Datenbank dann n&auml;mlich einfach nur zu &ouml;ffnen, was relativ einfach ist, und dabei die entsprechende E-Mail-Adresse zu &uuml;bergeben. Wenn die Access-Anwendung bereits ge&ouml;ffnet ist, wird es etwas komplizierter, denn dann m&uuml;ssen wir per VBA zun&auml;chst die Access-Anwendung referenzieren und diese dann so fernsteuern, dass sie den gew&uuml;nschten Kunden anzeigt.<\/p>\n<p>Wir wollen jedoch mit dem Aufruf beginnen.<\/p>\n<h2>E-Mail ausw&auml;hlen und den Prozess starten<\/h2>\n<p>Die Grundlagen zu diesem Schritt haben wir ausf&uuml;hrlich in dem eingangs erw&auml;hnten Beitrag beschrieben. Dabei haben wir eine VBA-Prozedur erstellt, welche die aktuelle E-Mail ermittelt und dann etwas damit erledigt.<\/p>\n<p>Einige der dort verwendeten Techniken &uuml;bernehmen wir f&uuml;r die nachfolgend vorgestellte Prozedur namens <b>ShowCustomerInAccess<\/b>, die Sie in Listing 1 finden (die nachfolgend beschriebenen Routinen geben Sie in einem neuen Standardmodul des VBA-Projekts von Outlook ein, das Sie von Outlook aus mit der Tastenkombination <b>Alt + F11 <\/b>&ouml;ffnen). Diese Prozedur schreibt den Pfad zur Kundenverwaltungs-Datenbank in die Variable <b>strDatabase <\/b>und referenziert den aktuell im Outlook-Explorer-Bereich angezeigten Ordner mit der Variablen <b>objCurrentFolder<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>ShowCustomerInAccess()\r\n     <span style=\"color:blue;\">Dim <\/span>objMailItem<span style=\"color:blue;\"> As <\/span>MailItem\r\n     <span style=\"color:blue;\">Dim <\/span>objExplorer<span style=\"color:blue;\"> As <\/span>Explorer\r\n     <span style=\"color:blue;\">Dim <\/span>objSelection<span style=\"color:blue;\"> As <\/span>Selection\r\n     <span style=\"color:blue;\">Dim <\/span>objCurrentFolder<span style=\"color:blue;\"> As <\/span>Folder\r\n     <span style=\"color:blue;\">Dim <\/span>objNamespace<span style=\"color:blue;\"> As <\/span>NameSpace\r\n     <span style=\"color:blue;\">Dim <\/span>objAccess<span style=\"color:blue;\"> As <\/span>Access.Application\r\n     <span style=\"color:blue;\">Dim <\/span>strMail<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strDatabase<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     strDatabase = \"C:\\...\\Kundenverwaltung.accdb\"\r\n     <span style=\"color:blue;\">Set<\/span> objExplorer = Application.ActiveExplorer\r\n     <span style=\"color:blue;\">Set<\/span> objCurrentFolder = objExplorer.CurrentFolder\r\n     <span style=\"color:blue;\">If <\/span>objCurrentFolder.Name = \"Posteingang\"<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> objSelection = objExplorer.Selection\r\n         <span style=\"color:blue;\">Set<\/span> objNamespace = Application.GetNamespace(\"MAPI\")\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> objSelection.count = 1<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> (\"Bitte selektieren Sie genau eine E-Mail.\")\r\n             <span style=\"color:blue;\">Exit Sub<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         Select Case TypeName(objSelection.Item(1))\r\n             <span style=\"color:blue;\">Case <\/span>\"MailItem\"\r\n                 <span style=\"color:blue;\">Set<\/span> objMailItem = objSelection.Item(1)\r\n                 strMail = objMailItem.SenderEmailAddress\r\n                 <span style=\"color:blue;\">Set<\/span> objAccess = GetDatabase(strDatabase)\r\n                 <span style=\"color:blue;\">If <\/span>objAccess Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n                     <span style=\"color:blue;\">Set<\/span> db = OpenDatabase(strDatabase)\r\n                     <span style=\"color:blue;\">If <\/span>CustomerExists(db, strMail)<span style=\"color:blue;\"> Then<\/span>\r\n                         OpenDatabaseInAccess strDatabase, strMail\r\n                     <span style=\"color:blue;\">Else<\/span>\r\n                         <span style=\"color:blue;\">MsgBox<\/span> \"Es existiert kein Kunde mit der E-Mail-Adresse ''\" _\r\n                             & strMail & \"''\"\r\n                     <span style=\"color:blue;\">End If<\/span>\r\n                     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n                 <span style=\"color:blue;\">Else<\/span>\r\n                     ShowCustomer objAccess, strMail\r\n                 <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">End Select<\/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 1: Prozedur zum Anzeigen eines Kunden in Access<\/span><\/b><\/p>\n<p>Hei&szlig;t dieser Ordner <b>Posteingang<\/b>, wird der Rest der Prozedur ausgef&uuml;hrt. Wenn Sie nicht die deutschsprachige Outlook-Version verwenden, hei&szlig;t der Ordner m&ouml;glicherweise anders, in diesem Fall m&uuml;ssen Sie den Code entsprechend anpassen. Die Prozedur erfasst mit der Variablen <b>objSelection <\/b>die aktuelle Auswahl in diesem Ordner. Wenn die mit <b>Count <\/b>ermittelte Anzahl der markierten Elemente nicht <b>1 <\/b>lautet, erscheint eine entsprechende Meldung und die Prozedur wird beendet.<\/p>\n<p>Anderenfalls pr&uuml;ft die Prozedur, ob es sich um ein Element des Typs <b>MailItem <\/b>handelt. Ist das der Fall, weist die Prozedur das markierte Objekt der Variablen <b>objMailItem <\/b>zu. Danach liest es die E-Mail-Adresse des Absenders aus der Eigenschaft <b>SenderEmailAddress <\/b>aus und schreibt sie in die Variable <b>strMail<\/b>.<\/p>\n<p>Anschlie&szlig;end versucht die Prozedur, mit der Funktion <b>GetDatabase <\/b>auf eine laufende Instanz der Datenbank aus <b>strDatabase <\/b>zugreifen. Liefert diese kein Objekt zur&uuml;ck, bleibt <b>objAccess <\/b>leer. Die Prozedur durchl&auml;uft dann den <b>If<\/b>-Teil der Bedingung.<\/p>\n<p>Hier erstellt sie mit <b>OpenDatabase <\/b>einen Verweis auf das <b>Database<\/b>-Objekt der Datenbank und referenziert dieses mit der Variablen <b>db<\/b>. Damit ruft sie die Funktion <b>CustomerExists <\/b>auf, die pr&uuml;ft, ob die Datenbank einen Kunden mit der angegebenen E-Mail-Adresse enth&auml;lt. Falls ja, ruft die Prozedur eine weitere Routine namens <b>OpenDatabaseInAccess <\/b>auf, welche die Kundenverwaltung &ouml;ffnen und die E-Mail-Adresse des gesuchten Kunden als Parameter &uuml;bergeben soll.<\/p>\n<p>Liefert <b>CustomerExists <\/b>den Wert <b>False <\/b>zur&uuml;ck, zeigt die Prozedur eine Meldung an, dass kein Kunde mit der angegebenen E-Mail-Adresse gefunden werden konnte.<\/p>\n<p>Es gibt noch den Fall, dass die Funktion <b>GetDatabase <\/b>einen Verweis auf eine Access-Anwendung zur&uuml;ckgeliefert hat. Diese wird im <b>Else<\/b>-Zweig der entsprechenden Bedingung behandelt. Dieser Teil ruft die Prozedur <b>ShowCustomer <\/b>auf und &uuml;bergibt dieser einen Verweis auf die gefundene Access-Instanz und die E-Mail-Adresse des gesuchten Kunden.<\/p>\n<p>Die hier aufgerufenen Funktionen und Prozeduren beschreiben wir in den folgenden Abschnitten.<\/p>\n<h2>Datenbank holen mit GetDatabase<\/h2>\n<p>Die erste Funktion, die wir ben&ouml;tigen, hei&szlig;t <b>GetDatabase<\/b>. Sie erwartet den Pfad der zu holenden Datenbank als Parameter und liefert eine Objektvariable des Typs <b>Access.Application <\/b>zur&uuml;ck (siehe Listing 2).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>GetDatabase(strDatabase<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As <\/span>Access.Application\r\n     <span style=\"color:blue;\">Dim <\/span>objAccess<span style=\"color:blue;\"> As <\/span>Access.Application\r\n     <span style=\"color:blue;\">If <\/span>IsDatabaseOpen(strDatabase)<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> objAccess = GetObject(strDatabase)\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> GetDatabase = objAccess\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Funktion zum Holen eines Access.Application-Objekts<\/span><\/b><\/p>\n<p>Die Funktion ruft eine weitere Funktion namens <b>IsDatabaseOpen <\/b>auf, der ebenfalls der Pfad zu der betroffenen Datenbank &uuml;bergeben wird. Diese Funktion, die wir im Anschluss beschreiben, pr&uuml;ft, ob die mit <b>strDatabase <\/b>angegebene Datenbank ge&ouml;ffnet ist. Ist das der Fall, verwendet die Funktoin <b>GetDatabase <\/b>die VBA-Funktion <b>GetObject <\/b>mit Angabe des Datenbankpfades, um einen Verweis auf das entsprechende <b>Access.Application<\/b>-Objekt zu holen. Der Inhalt der Variablen <b>objAccess <\/b>wird dann als Funktionswert der Funktion <b>GetDatabase <\/b>an die aufrufende Funktion zur&uuml;ckgegeben. Dabei kann <b>objAccess <\/b>an dieser Stelle auch leer sein, also den Wert <b>Nothing <\/b>enthalten.<\/p>\n<h2>Auf ge&ouml;ffnete Datenbank pr&uuml;fen mit IsDatabaseOpen<\/h2>\n<p><!--30percent--><\/p>\n<p>Die Funktion <b>IsDatabaseOpen <\/b>erwartet mit dem Parameter <b>strPath <\/b>die Angabe der zu untersuchenden Datenbankdatei (siehe Listing 3). Der Ansatz ist, die beim &Ouml;ffnen einer Datenbankdatei von Access erstellte Datei mit der Endung <b>.laccdb <\/b>zu untersuchen. Diese wird immer im gleichen Verzeichnis wie die <b>.accdb<\/b>-Datei erstellt. Au&szlig;erdem ist diese Datei, wenn die Datenbank noch ge&ouml;ffnet ist, schreibgesch&uuml;tzt und kann nicht gel&ouml;scht werden. Manchmal kommt es vor, dass die Access-Datenbank geschlossen wird und die <b>.laccdb<\/b>-Datei noch vorhanden ist. Dann kann diese aber problemlos gel&ouml;scht werden, was wir in der Funktion ausnutzen.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>IsDatabaseOpen(strPath<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strLACCDB<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>bolIsDatabaseOpen<span style=\"color:blue;\"> As Boolean<\/span>\r\n     strLACCDB = <span style=\"color:blue;\">Replace<\/span>(strPath, \".accdb\", \".laccdb\")\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(Dir(strLACCDB)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n         Kill strLACCDB\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> Err.Number = 0<span style=\"color:blue;\"> Then<\/span>\r\n             bolIsDatabaseOpen = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     IsDatabaseOpen = bolIsDatabaseOpen\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Funktion zum Pr&uuml;fen, ob eine Datenbank ge&ouml;ffnet ist<\/span><\/b><\/p>\n<p>Die Prozedur ermittelt zun&auml;chst den Pfad zu der gegebenenfalls vorhandenen <b>.laccdb<\/b>-Datei, indem es f&uuml;r den mit <b>strPath <\/b>angegebenen Pfad die Zeichenkette <b>.accdb <\/b>durch <b>.laccdb <\/b>ersetzt.<\/p>\n<p>Dann pr&uuml;ft die Prozedur, ob die <b>Dir<\/b>-Funktion f&uuml;r den Pfad zur <b>.laccdb<\/b>-Datei eine Zeichenkette mit einer L&auml;nge von mehr als 0 Zeichen zur&uuml;ckliefert. <b>Dir <\/b>liefert, soweit vorhanden, den Dateinamen. Wenn die <b>.laccdb<\/b>-Datei vorhanden ist, liefert <b>Dir <\/b>f&uuml;r den Pfad zu dieser Datei eine Zeichenkette mit mehr als 0 Zeichen.<\/p>\n<p>Ist die <b>.laccdb<\/b>-Datei vorhanden, m&uuml;ssen wir nun noch pr&uuml;fen, ob es sich dabei um ein &Uuml;berbleibsel einer zuvor ge&ouml;ffneten Datenbank handelt oder um eine aktive <b>.laccdb<\/b>-Datei. Eine aktive <b>.laccdb<\/b>-Datei kann nicht gel&ouml;scht werden, also versuchen wir, diese zu l&ouml;schen. Da das L&ouml;schen mit der <b>Kill<\/b>-Anweisung einen Fehler ausl&ouml;st, wenn die Datei nicht gel&ouml;scht werden kann, deaktivieren wir die eingebaute Fehlerbehandlung zuvor mit der Anweisung <b>On Error Resume Next<\/b>. Nach dem Aufruf der <b>Kill<\/b>-Anweisung pr&uuml;fen wir, ob dadurch ein Fehler ausgel&ouml;st wurde. In diesem Fall liefert <b>Err.Number <\/b>einen Wert ungleich <b>0<\/b>. Das bedeutet: Wenn die Datenbank ge&ouml;ffnet ist, kann die <b>.laccdb<\/b>-Datei nicht gel&ouml;scht werden und <b>Err.Number <\/b>ist ungleich <b>0<\/b>. In diesem Fall stellt die Funktion den Wert der Variablen <b>bolIsDatabaseOpen <\/b>auf <b>True <\/b>ein.<\/p>\n<p>Nach dieser Pr&uuml;fung gibt die Funktion den Wert aus <b>bolIsDatabaseOpen <\/b>als Funktionswert zur&uuml;ck.<\/p>\n<h2>Pr&uuml;fen der E-Mail-Adresse mit CustomerExists<\/h2>\n<p>Die Funktion <b>CustomerExists <\/b>erwartet einen Verweis auf das <b>Database<\/b>-Objekt der Kundendatenbank sowie die Angabe der zu untersuchenden E-Mail-Adresse als Parameter. Sie liefert einen <b>Boolean<\/b>-Wert zur&uuml;ck, der angibt, ob ein Kunde mit der angegebenen E-Mail-Adresse gefunden werden konnte (siehe Listing 4).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>CustomerExists(db<span style=\"color:blue;\"> As <\/span>DAO.Database, strEMail<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblKunden WHERE EMail = ''\" & strEMail & \"''\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> rst.EOF<span style=\"color:blue;\"> Then<\/span>\r\n         CustomerExists = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Funktion zum Pr&uuml;fen, ob ein Kunde mit der angegebenen E-Mail-Adresse existiert<\/span><\/b><\/p>\n<p>Die Funktion erstellt ein <b>Recordset<\/b>-Objekt auf Basis einer <b>SELECT<\/b>-Abfrage, die alle Kunden abfragt, deren Feld <b>EMail <\/b>mit dem Wert des Parameters <b>strEMail <\/b>&uuml;bereinstimmt. Danach pr&uuml;ft sie, ob das Recordset nicht leer ist. In diesem Fall gibt die Funktion den Wert <b>True <\/b>zur&uuml;ck.<\/p>\n<h2>&Ouml;ffnen der Kundendatenbank mit OpenDatabaseInAccess<\/h2>\n<p>Wenn der Kunde mit der angegebenen E-Mail-Adresse gefunden werden konnte und die Datenbank-Anwendung noch nicht ge&ouml;ffnet ist, wollen wir die Datenbank &ouml;ffnen und den gew&uuml;nschten Kundendatensatz in einem Formular namens <b>frmKunden <\/b>anzeigen.<\/p>\n<p>Die dazu aufgerufene Prozedur hei&szlig;t <b>OpenDatabaseInAccess<\/b>. Sie erwartet den Pfad zu der zu &ouml;ffnenden Datenbank sowie die E-Mail-Adresse des anzuzeigenden Kunden als Parameter (siehe Listing 5).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>OpenDatabaseInAccess(strDatabase<span style=\"color:blue;\"> As String<\/span>, strCommand<span style=\"color:blue;\"> As String<\/span>)\r\n     Shell \"MSAccess.exe \" & strDatabase & \" \/cmd \" & strCommand, vbNormalFocus\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Prozedur zum &Ouml;ffnen einer Access-Instanz mit der Kundendatenbank<\/span><\/b><\/p>\n<p>Die Prozedur verwendet die <b>Shell<\/b>-Funktion, um den Aufruf von Access per Kommandozeilen-Befehl durchzuf&uuml;hren. Die <b>Shell<\/b>-Funktion erwartet als ersten Parameter den auszuf&uuml;hrenden Befehl und als zweiten die Angabe, wie das zu &ouml;ffnende Fenster anzuzeigen ist.<\/p>\n<p>Der auszuf&uuml;hrende Befehl setzt sich aus drei Bestandteilen zusammen:<\/p>\n<ul>\n<li>Angabe der auszuf&uuml;hrenden Anwendung, hier <b>MSAccess.exe<\/b>. Gegebenenfalls m&uuml;ssen Sie hier den Pfad zur  <b>.exe<\/b>-Datei angeben.<\/li>\n<li>Angabe der Datenbankdatei, die mit Access ge&ouml;ffnet werden soll, hier durch den Inhalt der Variablen <b>strDatabase<\/b> angegeben.<\/li>\n<li>Angabe des Parameters <b>\/cmd <\/b>mit der zu &uuml;bergebenden E-Mail-Adresse.<\/li>\n<\/ul>\n<p>Der Befehl &ouml;ffnet eine Access-Instanz mit der angegebenen Datenbank und &uuml;bergibt die E-Mail-Adresse mit dem Parameter <b>\/cmd<\/b>.<\/p>\n<h2>Kundendatenbank f&uuml;r das Verarbeiten der E-Mail-Adresse vorbereiten<\/h2>\n<p>Unsere Kundendatenbank m&uuml;ssen wir noch vorbereiten, damit diese nach diesem Aufruf und der &Uuml;bergabe der E-Mail-Adresse als <b>Command<\/b>-Parameter den gew&uuml;nschten Kunden anzeigt. Die Datenbank haben wir so einfach wie m&ouml;glich gehalten. Sie enth&auml;lt eine Tabelle namens <b>tblKunden <\/b>sowie ein Formular namens <b>frmKunden<\/b>. Die Magie jedoch verbirgt sich in einem <b>AutoExec<\/b>-Makro sowie in der dadurch aufgerufenen VBA-Funktion.<\/p>\n<p>Das <b>AutoExec<\/b>-Makro sieht wie in Bild 1 aus. Es enth&auml;lt lediglich eine Makroaktion, n&auml;mlich Ausf&uuml;hrenCode. Der Funktionsname lautet <b>=Start()<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_02\/pic_1291_001.png\" alt=\"Das AutoExec-Makro der Kundenverwaltung\" width=\"499,6607\" height=\"150,533\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Das AutoExec-Makro der Kundenverwaltung<\/span><\/b><\/p>\n<p>Diese Funktion programmieren wir wie in Listing 6. Die Funktion <b>Command <\/b>liefert die Zeichenkette, die beim Aufruf von Access mit dem Parameter <b>\/cmd <\/b>&uuml;bergeben wurde. In der <b>If&#8230;Then<\/b>-Bedingung pr&uuml;ft die Funktion, ob <b>Command <\/b>eine Zeichenkette mit einer L&auml;nge gr&ouml;&szlig;er als <b>0 <\/b>enth&auml;lt. Falls ja, schreibt sie den Inhalt in die Variable <b>strMail<\/b>. Diese Variable wird in der folgenden <b>DoCmd.OpenForm<\/b>-Methode als Vergleichswert des f&uuml;r den Parameter <b>WhereCondition <\/b>&uuml;bergebenen Ausdrucks verwendet.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>Start()\r\n     <span style=\"color:blue;\">Dim <\/span>strMail<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(Command) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         strMail = Command\r\n         DoCmd.OpenForm \"frmKunden\", WhereCondition:=\"EMail = ''\" & strMail & \"''\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 6: Funktion zum &Ouml;ffnen des Kunden-Formulars f&uuml;r die &uuml;bergebene E-Mail-Adresse<\/span><\/b><\/p>\n<p>Das Formular <b>frmKunden <\/b>sollte damit so ge&ouml;ffnet werden, dass es nur Datens&auml;tze anzeigt, deren Wert im Feld <b>EMail <\/b>den mit dem <b>\/cmd<\/b>-Parameter &uuml;bergebenen Wert entspricht.<\/p>\n<p>Die so ge&ouml;ffnete Access-Anwendung l&auml;dt also direkt die gew&uuml;nschte Datenbank und &ouml;ffnet das Formular frmKunden f&uuml;r den Kunden, der die Absenderadresse aus der aktuell in Outlook selektierten E-Mail enth&auml;lt.<\/p>\n<h2>Kunde in ge&ouml;ffneter Datenbank anzeigen mit ShowCustomer<\/h2>\n<p>Sollte die Prozedur <b>ShowCustomer-In-Access <\/b>von weiter oben eine Access-Instanz mit der Kundendatenbank gefunden haben und die dortige Variable <b>objAccess <\/b>nicht leer sein, wird im <b>Else<\/b>-Zweig der entsprechenden Bedingung die Prozedur <b>ShowCustomer <\/b>aufgerufen. Diese erwartet als Parameter die Objektvariable <b>objAccess <\/b>mit einem Verweis auf die gefundene Access-Instanz sowie die E-Mail-Adresse des zu &ouml;ffnenden Kunden aus der E-Mail (siehe Listing 7).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>ShowCustomer(objAccess<span style=\"color:blue;\"> As <\/span>Access.Application, strEMail<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>lngHwnd<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">With<\/span> objAccess\r\n         lngHwnd = .hWndAccessApp\r\n         <span style=\"color:blue;\">Set<\/span> db = .CurrentDb\r\n         <span style=\"color:blue;\">If <\/span>CustomerExists(db, strEMail)<span style=\"color:blue;\"> Then<\/span>\r\n             On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n             .DoCmd.Close acForm, \"frmKunden\"\r\n             <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n             .DoCmd.OpenForm \"frmKunden\", WhereCondition:=\"EMail=''\" & strEMail & \"''\"\r\n             SetForegroundWindow lngHwnd\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Es existiert kein Kunde mit der E-Mail-Adresse ''\" & strEMail & \"''\"\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 Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 7: Funktion zum Anzeigen eines Kunden in einer bereits ge&ouml;ffneten Kunden-Datenbank<\/span><\/b><\/p>\n<p>Die Prozedur nutzt die Eigenschaft <b>hWndAccessApp <\/b>der Access-Instanz aus <b>objAccess<\/b>, um das Fenster-Handle auf die Access-Instanz zu bestimmen und in der Variablen <b>lngHwnd <\/b>zu speichern. Dann referenziert es das mit <b>CurrentDb <\/b>ermittelte <b>Database<\/b>-Objekt dieser Datenbank mit der Variablen <b>db<\/b>. Die weiter oben bereits beschriebene Funktion <b>CustomerExists <\/b>kommt hier zu einem weiteren Aufruf. Wir pr&uuml;fen also zun&auml;chst, ob die Datenbank &uuml;berhaupt einen Kunden enth&auml;lt, f&uuml;r den die angegebene E-Mail-Adresse hinterlegt wurde.<\/p>\n<p>Liegt ein entsprechender Kunde vor, schlie&szlig;en wir zur Sicherheit das eventuell noch ge&ouml;ffnete Formular frmKunden. Da dies einen Fehler ausl&ouml;st, wenn das Formular gar nicht ge&ouml;ffnet ist, deaktivieren wir die eingebaute Fehlerbehandlung zuvor mit <b>On Error Resume Next <\/b>und aktivieren diese anschlie&szlig;end wieder mit <b>On Error Goto 0<\/b>.<\/p>\n<p>Danach &ouml;ffnen wir das Kunden-Formular mit der <b>DoCmd.OpenForm<\/b>-Methode und &uuml;bergeben den Namen des zu &ouml;ffnenden Formulars sowie eine Bedingung f&uuml;r den Parameter <b>WhereCondition<\/b>. Diese Bedingung soll alle Datens&auml;tze liefern, deren Feld <b>EMail <\/b>die mit <b>strEMail <\/b>gelieferte E-Mail-Adresse enth&auml;lt.<\/p>\n<p>Schlie&szlig;lich holen wir das bereits ge&ouml;ffnete Access-Fenster noch mit der API-Funktion <b>SetForegroundWindow <\/b>nach vorn. Dazu &uuml;bergeben wir diesem das Fenster-Handle aus <b>lngHwnd<\/b>, das wir zuvor ermittelt haben. Dies ist n&ouml;tig, da wir die Aktion ja von Outlook aus initiieren und das Access-Fenster gegebenenfalls zu diesem Zeitpunkt hinter einem oder mehreren Fenstern versteckt sein k&ouml;nnte.<\/p>\n<p>Die API-Funktion <b>SetForegroundWindow <\/b>deklarieren wir oben in dem Standardmodul des Outlook-VBA-Projekts, in dem sich auch die &uuml;brigen hier vorgestellten Prozeduren und Funktionen befinden:<\/p>\n<pre>Declare Function SetForegroundWindow Lib \"user32.dll\"  (ByVal hwnd<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Long<\/span><\/pre>\n<p>Bleibt noch die M&ouml;glichkeit, dass kein passender Datensatz in der Tabelle <b>tblKunden <\/b>gefunden wurde.<\/p>\n<p>In diesem Fall gibt auch diese Prozedur eine Meldung mit den Hinweis aus, dass kein Kunde mit der gesuchten E-Mail-Adresse existiert.<\/p>\n<h2>Funktion in Outlook per Tastenkombination verf&uuml;gbar machen<\/h2>\n<p>Im Beitrag <b>Outlook-Mails per Tastenkombination verschieben <\/b>(<b>www.access-im-unternehmen.de\/1290<\/b>) haben wir bereits ausf&uuml;hrlich erl&auml;utert, wie Sie VBA-Prozeduren per Tastenkombination ausw&auml;hlen k&ouml;nnen &#8211; daher hier nur die gek&uuml;rzte Fassung, um den Aufruf der Kundendatenbank f&uuml;r den Kunden der aktuellen E-Mail zu realisieren.<\/p>\n<p>Dazu f&uuml;gen Sie der Quick Access Toolbar des Ribbons ein neues Element hinzu:<\/p>\n<ul>\n<li>Klicken Sie auf die Schaltfl&auml;che rechts in der Quick Access Toolbar mit dem nach unten zeigenden Dreieck.<\/li>\n<li>W&auml;hlen Sie dort den Eintrag <b>Weitere Befehle&#8230; <\/b>aus.<\/li>\n<li>W&auml;hlen Sie im nun erscheinenden Dialog <b>Outlook-Optionen <\/b>im Auswahlfeld &uuml;ber dem linken Listenfeld den Eintrag <b>Makros <\/b>aus.<\/li>\n<li>Im Listenfeld darunter finden Sie dann den Eintrag <<b>Projektname>.ShowCustomerInAccess<\/b>.<\/li>\n<li>Markieren Sie diesen Eintrag und klicken Sie auf die Schaltfl&auml;che <b>Hinzuf&uuml;gen >><\/b>.<\/li>\n<li>Markieren Sie den neuen Eintrag im rechten Listenfeld und klicken Sie auf die Schaltfl&auml;che <b>&Auml;ndern&#8230;<\/b>.<\/li>\n<li>W&auml;hlen Sie im nun erscheinenden Dialog <b>Schaltfl&auml;che &#8220;&Auml;ndern&#8220; <\/b>ein passendes Icon aus und stellen Sie die Beschriftung beispielsweise auf <b>Kunde in Datenbank &ouml;ffnen <\/b>ein.<\/li>\n<li>Danach wird die neue Schaltfl&auml;che oben in der Quick Access Toolbar angezeigt.<\/li>\n<\/ul>\n<p>Wie kommen Sie nun zu der Tastenkombination Wie diese lautet, richtet sich nach der Position der neuen Schaltfl&auml;che in der Quick Access Toolbar. Wenn sich diese beispielsweise an der dritten Position befindet, k&ouml;nnen Sie die Tastenkombination <b>Alt + 3 <\/b>verwenden, um den Befehl aufzurufen.<\/p>\n<p>Wenn gerade eine E-Mail markiert ist, sollte dies nun den passenden Kundendatensatz in der Kundenverwaltung anzeigen. Diese wird dazu entweder ge&ouml;ffnet (wenn Sie geschlossen ist) oder eine vorhandene Instanz wird zur Anzeige der Kundendaten genutzt.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Die hier vorgestellte L&ouml;sung bietet eine extreme Vereinfachung zur Anzeige eines Kunden in der Datenbank, der Ihnen eine E-Mail geschrieben hat. Sie brauchen einfach nur die E-Mail zu markieren und eine Tastenkombination wie <b>Alt + 3 <\/b>zu bet&auml;tigen. Sollte die Kundendatenbank einen Kunden enthalten, f&uuml;r den die Absenderadresse der E-Mail festgelegt ist, wird dieser im Kunden-Formular angezeigt.<\/p>\n<p>Auch diese L&ouml;sung l&auml;sst sich noch erweitern. So kann es beispielsweise sein, dass der Kunde in der E-Mail eine andere E-Mail-Adresse verwendet als in der Kundendatenbank angegeben ist. F&uuml;r solche F&auml;lle k&ouml;nnten Sie die Kundendatenbank so anpassen, dass mehrere E-Mail-Adressen je Kunde angelegt werden k&ouml;nnen, die dann von der hier vorgestellten L&ouml;sung ausgelesen werden.<\/p>\n<p>Oder Sie hinterlegen eine Funktion, mit der ein neuer Kunde zu der ausgew&auml;hlten E-Mail angelegt wird &#8211; vielleicht wird ja aus der E-Mail-Anfrage ein Kunde!<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Kundenverwaltung.accdb<\/p>\n<p>mdlMailsVerschieben.bas<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/84EAD60D-5B59-484C-B8C7-B7ADF8AF4954\/aiu_1291.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Viele Access-Benutzer d&uuml;rften, wenn Sie schon das Office-Paket auf dem Rechner haben, auch Outlook nutzen &#8211; zumindest, um E-Mails zum empfangen, zu senden und zu bearbeiten. Vielen fehlt dabei die M&ouml;glichkeit einer st&auml;rkeren Interaktion zwischen Access und Outlook, beispielsweise bei Verwendung einer Kundenverwaltung. Eine pfiffige M&ouml;glichkeit w&auml;re es, beim Anzeigen einer E-Mail von einem bestimmten Kunden direkt den Kundendatensatz in der Kundenverwaltung zu &ouml;ffnen. Dies sollte dann auch noch auf m&ouml;glichst einfache Art und Weise geschehen, beispielsweise per Tastenkombination. Wie das gelingt, zeigt der vorliegende Beitrag.<\/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":[66022021,662021,44000026],"tags":[],"class_list":["post-55001291","post","type-post","status-publish","format-standard","hentry","category-66022021","category-662021","category-Interaktiv"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Kunde zu einer E-Mail &ouml;ffnen - 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\/Kunde_zu_einer_EMail_oeffnen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kunde zu einer E-Mail &ouml;ffnen\" \/>\n<meta property=\"og:description\" content=\"Viele Access-Benutzer d&uuml;rften, wenn Sie schon das Office-Paket auf dem Rechner haben, auch Outlook nutzen - zumindest, um E-Mails zum empfangen, zu senden und zu bearbeiten. Vielen fehlt dabei die M&ouml;glichkeit einer st&auml;rkeren Interaktion zwischen Access und Outlook, beispielsweise bei Verwendung einer Kundenverwaltung. Eine pfiffige M&ouml;glichkeit w&auml;re es, beim Anzeigen einer E-Mail von einem bestimmten Kunden direkt den Kundendatensatz in der Kundenverwaltung zu &ouml;ffnen. Dies sollte dann auch noch auf m&ouml;glichst einfache Art und Weise geschehen, beispielsweise per Tastenkombination. Wie das gelingt, zeigt der vorliegende Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-31T10:17:44+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/feae8ffd782b44a19f91875ec49708a2\" \/>\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\\\/Kunde_zu_einer_EMail_oeffnen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Kunde zu einer E-Mail &ouml;ffnen\",\"datePublished\":\"2021-07-31T10:17:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/\"},\"wordCount\":2709,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/feae8ffd782b44a19f91875ec49708a2\",\"articleSection\":[\"2\\\/2021\",\"2021\",\"Interaktiv\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/\",\"name\":\"Kunde zu einer E-Mail &ouml;ffnen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/feae8ffd782b44a19f91875ec49708a2\",\"datePublished\":\"2021-07-31T10:17:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/feae8ffd782b44a19f91875ec49708a2\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/feae8ffd782b44a19f91875ec49708a2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Kunde_zu_einer_EMail_oeffnen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kunde zu einer E-Mail &ouml;ffnen\"}]},{\"@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":"Kunde zu einer E-Mail &ouml;ffnen - 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\/Kunde_zu_einer_EMail_oeffnen\/","og_locale":"de_DE","og_type":"article","og_title":"Kunde zu einer E-Mail &ouml;ffnen","og_description":"Viele Access-Benutzer d&uuml;rften, wenn Sie schon das Office-Paket auf dem Rechner haben, auch Outlook nutzen - zumindest, um E-Mails zum empfangen, zu senden und zu bearbeiten. Vielen fehlt dabei die M&ouml;glichkeit einer st&auml;rkeren Interaktion zwischen Access und Outlook, beispielsweise bei Verwendung einer Kundenverwaltung. Eine pfiffige M&ouml;glichkeit w&auml;re es, beim Anzeigen einer E-Mail von einem bestimmten Kunden direkt den Kundendatensatz in der Kundenverwaltung zu &ouml;ffnen. Dies sollte dann auch noch auf m&ouml;glichst einfache Art und Weise geschehen, beispielsweise per Tastenkombination. Wie das gelingt, zeigt der vorliegende Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-07-31T10:17:44+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/feae8ffd782b44a19f91875ec49708a2","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\/Kunde_zu_einer_EMail_oeffnen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Kunde zu einer E-Mail &ouml;ffnen","datePublished":"2021-07-31T10:17:44+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/"},"wordCount":2709,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/feae8ffd782b44a19f91875ec49708a2","articleSection":["2\/2021","2021","Interaktiv"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/","url":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/","name":"Kunde zu einer E-Mail &ouml;ffnen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/feae8ffd782b44a19f91875ec49708a2","datePublished":"2021-07-31T10:17:44+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/feae8ffd782b44a19f91875ec49708a2","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/feae8ffd782b44a19f91875ec49708a2"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Kunde_zu_einer_EMail_oeffnen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Kunde zu einer E-Mail &ouml;ffnen"}]},{"@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\/55001291","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=55001291"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001291\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}