{"id":55001095,"date":"2017-08-01T00:00:00","date_gmt":"2020-05-14T13:34:28","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1095"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"EffizienzHacks_Mailabruf_erschweren","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/","title":{"rendered":"Effizienz-Hacks: Mailabruf erschweren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/3de6dcca6ac546ad983a9b066717cdc0\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Ich wei&szlig; nicht, wie es Ihnen geht, aber ich gestehe: Mail, Facebook und Co. sind echte Zeitfresser in meinem Leben. Wenn ich gerade mal nicht vorw&auml;rts komme, lese ich abwechselnd E-Mails (manchmal im Minutentakt) oder schaue, was es bei Facebook oder anderen sozialen Netzwerken f&uuml;r Neuigkeiten gibt. Wie viel Zeit k&ouml;nnte man sparen, wenn man diese Ablenkungen nicht direkt vor der Nase h&auml;tte &#8211; direkt neben den zu bearbeitenden Dokumenten oder Anwendungen! Dieser Beitrag zeigt, wie Sie zumindest den Umgang mit E-Mails etwas achtsamer gestalten oder diesen gleich auf bestimmte Uhrzeiten einschr&auml;nken k&ouml;nnen.<\/b><\/p>\n<p>Outlook ist auf meinem Desktop immer ge&ouml;ffnet. Kein Wunder: Ich rufe E-Mails damit ab, verwalte Kontakte damit und tracke die f&uuml;r meine Projekte aufgebrachte Arbeitszeit. Leider tracke ich damit nicht die Zeit, die f&uuml;r das Lesen von E-Mails oder f&uuml;r das Surfen im Internet draufgeht. W&uuml;rde ich das mal vor Augen gehalten bekommen, w&auml;re ich vielleicht ein wenig achtsamer bei diesem Thema.<\/p>\n<p>Letztlich gibt es nur einen ganz kleinen Prozentsatz von E-Mails, die so wichtig sind, dass sie ganz schnell erledigt werden m&uuml;ssen. Und wer wirklich dringend etwas von einem m&ouml;chte, der wird wahrscheinlich ohnehin zum H&ouml;rer greifen.<\/p>\n<p>Und wenn wir ehrlich sind: Da immer mehr E-Mails, die wirklich nicht wichtig sind, mit der h&ouml;chsten Priorit&auml;t versendet werden, ist das rote Aufrufezeichen neben einer E-Mail auch nicht unbedingt Anlass f&uuml;r &uuml;bertriebene Hektik (man munkelt, einige Benutzer h&auml;tten die h&ouml;chste Priorit&auml;t als Standard eingestellt und w&uuml;ssten nicht, wie man diese Einstellung &auml;ndert &#8230;). Nun gibt es grob drei Typen von E-Mail-Konsumenten:<\/p>\n<ul>\n<li>Der <b>Ich-will-nichts-verpassen-Konsument<\/b>: Er hat Outlook so eingestellt, dass automatisch alle 60 Sekunden neue E-Mails abgerufen werden und hechelt direkt beim Eingang des Signals f&uuml;r eine eingehende E-Mail zu Outlook.<\/li>\n<li>Der <b>Prokrastinierer<\/b>: Er erwartet nicht wirklich wichtige E-Mails und l&auml;sst nicht automatisch abrufen. Daf&uuml;r ruft er selbst immer E-Mails ab, wenn die eigentliche Arbeit zu langweilig, zu stressig oder zu anstrengend ist.<\/li>\n<li>Der <b>Gelegenheitskonsument<\/b>: Er ist v&ouml;llig entspannt und wei&szlig;, dass die Welt nicht untergeht, wenn er mal einen Tag keine E-Mails abruft. Er ruft E-Mails maximal ein bis zwei Mal pro Tag ab.<\/li>\n<\/ul>\n<p>Gerade beim Prokrastinierer ist Achtsamkeit ein wichtiges Schl&uuml;sselwort: Letztlich wei&szlig; er, dass es lediglich Zeit kostet und die Erledigung der eigentlichen Aufgabe hinausz&ouml;gert, wenn er E-Mails abruft. Dennoch macht er es. Das ist genau wie der Griff zur Zigarette, zur S&uuml;&szlig;igkeit oder zum Kaffee. Wie aber k&ouml;nnen wir dem Dauer-Mail-Checker helfen, von seinem Verhalten loszukommen Dazu gibt es zwei Ans&auml;tze, die ich in den letzten Tagen testweise einsetze:<\/p>\n<ul>\n<li>Jedes Mal, wenn ich E-Mails abrufe und mindestens eine E-Mail heruntergeladen wird, tr&auml;gt Outlook dies in den Kalender ein.<\/li>\n<li>Jedes Mal, wenn ich auf <b>Alle Ordner senden\/empfangen <\/b>klicke, erscheint eine Meldung, gegebenenfalls mit Countdown, die mich fragt, ob ich gerade wirklich E-Mails abrufen m&ouml;chte.<\/li>\n<\/ul>\n<h2>E-Mail-Lese-Tracker<\/h2>\n<p>Die erste Variante liefert im Kalender beispielsweise eine Ansicht wie in Bild 1. Jeder gr&uuml;ne Eintrag entspricht einem erfolgreichen Abruf einer E-Mail. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_001.png\" alt=\"Jeder gr&uuml;ne Eintrag entspricht einem erfolgreichen Mail-Abruf.\" width=\"424,7115\" height=\"698,625\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Jeder gr&uuml;ne Eintrag entspricht einem erfolgreichen Mail-Abruf.<\/span><\/b><\/p>\n<p>Was soll dies bewirken Es zeigt dem Benutzer, wie oft er an diesem Tag tats&auml;chlich E-Mails abgerufen hat. Diese Tage sind schon recht diszipliziert, teilweise wurde weniger als jede halbe Stunde auf die Taste zum Abrufen geklickt. Das k&ouml;nnte auch anders aussehen &#8230;<\/p>\n<p>Sp&auml;testens, wenn der Benutzer die &uuml;brigen Eintr&auml;ge im Kalender nicht mehr lesen kann, wird er &uuml;ber seinen E-Mail-Konsum nachdenken. Und falls nicht, haben wir ja sp&auml;ter noch eine weitere M&ouml;glichkeit, die Achtsamkeit zu erh&ouml;hen.<\/p>\n<p>Schauen wir uns zun&auml;chst die technische Umsetzung dieser L&ouml;sung an.<\/p>\n<h2>Outlook-Mailabrufe in den Kalender eintragen<\/h2>\n<p>Dazu f&uuml;gen wir dem Modul <b>ThisOutlookSession <\/b>des VBA-Projekts von Outlook einige Zeilen Code hinzu. Den VBA-Editor von Outlook &ouml;ffnen Sie &uuml;brigens am schnellsten mit der Tastenkombination <b>Alt + F11<\/b>. Dort finden Sie dann auch das genannte Modul, in dem wir zun&auml;chst die folgenden drei Variablen deklarieren:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>WithEvents objOutlook<span style=\"color:blue;\"> As <\/span>Outlook.Application\r\n<span style=\"color:blue;\">Dim <\/span>WithEvents objPosteingang<span style=\"color:blue;\"> As <\/span>Outlook.Folder\r\n<span style=\"color:blue;\">Dim <\/span>WithEvents objPosteingangItems<span style=\"color:blue;\"> As <\/span>Outlook.Items<\/pre>\n<p>Au&szlig;erdem ben&ouml;tigen wir noch eine Variable, in der wir das Datum der letzten E-Mail-Abfrage speichern:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>datLastMail<span style=\"color:blue;\"> As Date<\/span><\/pre>\n<p>Danach legen wir die Ereignisprozedur <b>Application_Startup <\/b>an, was Sie durch die Auswahl des Eintrags <b>Application <\/b>im linken Kombinationsfeld des Codefensters und Auswahl des Eintrags <b>Startup <\/b>im rechten Kombinationsfeld erledigen k&ouml;nnen. Diese Prozedur f&uuml;llt lediglich die drei zuvor deklarierten Objektvariablen mit den entsprechenden Objekten (s. Listing 1).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Application_Startup()\r\n     <span style=\"color:blue;\">Set<\/span> objOutlook = Application\r\n     <span style=\"color:blue;\">Set<\/span> objPosteingang = objOutlook.GetNamespace(\"MAPI\").GetDefaultFolder(olFolderInbox)\r\n     <span style=\"color:blue;\">Set<\/span> objPosteingangItems = objPosteingang.Items\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Diese Methode wird beim Start von Outlook ausgef&uuml;hrt.<\/span><\/b><\/p>\n<p><b>objOutlook <\/b>erh&auml;lt einen Verweis auf das <b>Application<\/b>-Objekt der aktuellen Outlook-Instanz. <b>objPosteingang <\/b>nimmt einen Verweis auf den Outlook-Ordner <b>Posteingang <\/b>auf, den wir &uuml;ber den MAPI-Namespace und die Methode <b>GetDefaultFolder <\/b>mit dem Wert <b>olFolderInbox <\/b>als Parameter ermitteln. Schlie&szlig;lich erh&auml;lt die <b>Items<\/b>-Variable <b>objPosteingangItems <\/b>einen Verweis auf die <b>Items<\/b>-Auflistung des in <b>objPosteingang <\/b>gespeicherten Ordners.<\/p>\n<p>F&uuml;r das Objekt <b>objPosteingangItems <\/b>legen wir eine Ereignisprozedur an, die durch das Ereignis <b>ItemAdd <\/b>ausgel&ouml;st wird. Um die leere Ereignisprozedur zu erstellen, w&auml;hlen wir wieder zwei Eintr&auml;ge in den beiden Kombinationsfeldern des VBA-Editors aus &#8211; links den Eintrag <b>objPosteingangItems <\/b>und rechts <b>ItemAdd<\/b>. Diese Ereignisprozedur f&uuml;llen wir wie in Listing 2.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>objPosteingangItems_ItemAdd(ByVal Item<span style=\"color:blue;\"> As Object<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>objCalendar<span style=\"color:blue;\"> As <\/span>Outlook.Folder\r\n     <span style=\"color:blue;\">Dim <\/span>datLastMailTemp<span style=\"color:blue;\"> As Date<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>objAppointment<span style=\"color:blue;\"> As <\/span>Outlook.AppointmentItem\r\n     datLastMailTemp = DateSerial(Year(Now), Month(Now), Day(Now)) + TimeSerial(Hour(Now), Minute(Now), 0)\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> datLastMailTemp = datLastMail<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> objCalendar = objOutlook.GetNamespace(\"MAPI\").GetDefaultFolder(olFolderCalendar)\r\n         <span style=\"color:blue;\">Set<\/span> objAppointment = objOutlook.CreateItem(olAppointmentItem)\r\n         <span style=\"color:blue;\">With<\/span> objAppointment\r\n             .Subject = \"Mailabruf \" & Format(Now, \"hh:nn\")\r\n             .Start = Now\r\n             .Duration = 30\r\n             .Categories = \"Mail abrufen\"\r\n             .Reminder<span style=\"color:blue;\">Set<\/span> = <span style=\"color:blue;\">False<\/span>\r\n             .Save\r\n             <span style=\"color:blue;\">Debug.Print<\/span> \"Geschrieben \" & .Subject\r\n         End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     datLastMail = datLastMailTemp\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Dieses Ereignis wird ausgel&ouml;st, wenn eine neue E-Mail in der Items-Liste landet.<\/span><\/b><\/p>\n<p>Die Prozedur nimmt mit dem Parameter <b>Item <\/b>das neue Element des Ordners entgegen, in diesem Fall eine E-Mail. Die Prozedur definiert eine Variable namens <b>obj-Calendar<\/b>, welche den Kalender referenzieren soll und eine <b>AppointmentItem<\/b>-Variable f&uuml;r den neu anzulegenden Termin. Au&szlig;erdem ermitteln wir mit der <b>DateSerial<\/b>-Funktion eine Zeitangabe, welche das aktuelle Datum und die aktuelle Uhrzeit ermittelt. Dabei soll als Anzahl der Sekunden der Wert <b>0 <\/b>&uuml;bergeben werden, damit pro Minute nur ein Mail-Abruf aufgezeichnet werden kann. <\/p>\n<p>Nun folgt eine Pr&uuml;fung, ob der in der modulweit deklarierten Variablen <b>datLastMail <\/b>gespeicherte Wert mit dem Wert aus <b>datLastMailTemp <\/b>&uuml;bereinstimmt. Ist dies der Fall, dann wurde in dieser Minute bereits einmal eine E-Mail abgerufen &#8211; und mehr als einen Eintrag pro Minute wollen wir dem Kalender nicht zumuten.<\/p>\n<p>Anderenfalls wird die Variable <b>objCalendar <\/b>mit dem Kalender-Ordner gef&uuml;llt, welchen wir &uuml;ber die Methode <b>GetDefaultFolder <\/b>des MAPI-Ordners mit dem Wert <b>olFolderCalendar <\/b>als Parameter referenzieren. <b>objAppointment <\/b>f&uuml;llen wir mit der Methode <b>CreateItem<\/b>, der wir den Wert <b>olAppointmentItem <\/b>&uuml;bergeben. So wird ein <b>AppointmentItem<\/b>-Element erstellt.<\/p>\n<p>Danach stellt die Prozedur einige Werte f&uuml;r das neue <b>AppointmentItem<\/b>-Element ein. Der Betreff (<b>Subject<\/b>) soll den Text <b>Mailabruf <\/b>sowie die aktuelle Uhrzeit im Format <b>hh:nn <\/b>als Inhalt anzeigen. Die Eigenschaft <b>Duration <\/b>legt mit dem Wert <b>30 <\/b>die Dauer des Elements in Minuten fest.  Als Kategorie stellen wir <b>Mail abrufen <\/b>ein. Diese Kategorie m&uuml;ssen Sie noch als Kategorie mit dem Dialog <b>Farbkategorien <\/b>einrichten (s. Bild 2). Au&szlig;erdem deaktivieren wir mit <b>ReminderSet = False <\/b>die Anzeige von Erinnerungen zu diesem Termin. Schlie&szlig;lich speichert die <b>Save<\/b>-Methode den Termin und sorgt so f&uuml;r dessen Anzeige in Outlook. Damit der Vergleich des Zeitpunkts des aktuellen Mailabrufs mit dem des vorherigen gelingt, m&uuml;ssen wir nun noch den Wert von <b>datLastMailTemp <\/b>in <b>datLastMail <\/b>eintragen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_002.png\" alt=\"Einstellen der Farbe f&uuml;r die Kategorie Mail abrufen\" width=\"424,7115\" height=\"320,8557\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Einstellen der Farbe f&uuml;r die Kategorie Mail abrufen<\/span><\/b><\/p>\n<h2>Wie funktioniert es<\/h2>\n<p>Wenn Sie nun direkt eine Testmail an sich selbst verschicken, Mails abrufen und sich wundern, warum kein entsprechender Termin im Kalender eingetragen wird &#8211; keine Sorge: Es fehlt nur noch ein kleiner Schritt. Sie m&uuml;ssen n&auml;mlich daf&uuml;r sorgen, dass die Ereignisprozedur <b>Application_Startup <\/b>ausgel&ouml;st wird. Diese f&uuml;llt erst die Variablen mit den gew&uuml;nschten Objekten und sorgt dann daf&uuml;r, dass die Ereignisprozedur f&uuml;r die Variable <b>objPosteingang-Items <\/b>beim n&auml;chsten Eingang einer E-Mail ausgel&ouml;st wird. Dies k&ouml;nnen Sie in diesem Fall manuell erledigen, indem Sie die Einf&uuml;gemarke innerhalb der Prozedur platzieren und die Taste <b>F5 <\/b>bet&auml;tigen. Oder Sie starten Outlook einfach neu, um die Prozedur automatisch auszul&ouml;sen.<\/p>\n<h2>Achtsamkeit beim Mailabruf<\/h2>\n<p>Damit kommen wir nun zur zweiten L&ouml;sung, die direkt beim Klick auf die Schaltfl&auml;che <b>Alle Ordner senden\/empfangen <\/b>ausgel&ouml;st wird und eine passende Meldungsbox anzeigen soll. Die schlechte Nachricht ist: Es gibt keine M&ouml;glichkeit, den Mausklick auf diese Schaltfl&auml;che des Ribbons mithilfe einer VBA-basierten L&ouml;sung abzufangen. Stattdessen ben&ouml;tigen wir ein COM-Add-In auf Basis von Visual Studio. Zum Gl&uuml;ck gibt es Visual Studio 2015 in der Community-Edition kostenlos f&uuml;r einzelne Entwickler und kleinere Betriebe, sodass keine zus&auml;tzlichen Kosten f&uuml;r diese sehr interessante Programmierung einer Erweiterung von Outlook anfallen. Sie m&uuml;ssen sich lediglich Visual Studio 2015 Community herunterladen und dieses installieren. Au&szlig;erdem ben&ouml;tigen Sie alle aktuellen Erweiterungen, die dann auch die f&uuml;r die Programmierung von COM-Add-Ins f&uuml;r die Office-Anwendungen ben&ouml;tigten Vorlagen mitliefern.<\/p>\n<h2>Projekt anlegen<\/h2>\n<p><!--30percent--><\/p>\n<p>Nach dem Starten von Visual Studio legen Sie ein neues Projekt des Typs <b>Visual Basic|Office\/SharePoint|VSTO-Add-Ins|Outlook 2013 und 2016 VSTO-Add-In <\/b>an. Legen Sie als Name <b>OutlookAddIn <\/b>fest (s. Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_003.png\" alt=\"Anlegen eines neuen Projekts auf Basis der Outlook-Vorlage \" width=\"649,559\" height=\"387,134\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Anlegen eines neuen Projekts auf Basis der Outlook-Vorlage <\/span><\/b><\/p>\n<p>Visual Studio zeigt nun ein Modul mit den zwei Ereignismethoden <b>ThisAddIn_Startup() <\/b>und <b>ThisAddIn_Shutdown() <\/b>an. Diese beiden ben&ouml;tigen wir nicht. Wir wollen eine Ribbon-Definition hinzuf&uuml;gen, mit der wir die eigentliche Funktion der Schaltfl&auml;che <b>Alle Ordner senden\/empfangen <\/b>unterbinden und eine eigene Funktion ausf&uuml;hren.<\/p>\n<p>Dazu f&uuml;gen wir dem Projekt zun&auml;chst ein Ribbon hinzu. Klicken Sie dazu im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen <b>OutlookAddIn <\/b>und w&auml;hlen Sie den Eintrag <b>Hinzuf&uuml;gen|Neues Element<\/b>. Es erscheint der Dialog <b>Neues Element hinzuf&uuml;gen<\/b>. Hier w&auml;hlen Sie den Eintrag <b>Men&uuml;band (Visueller Designer) <\/b>aus und geben den Namen <b>Outlook_Ribbon <\/b>ein (s. Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_004.png\" alt=\"Hinzuf&uuml;gen eines Ribbons\" width=\"649,559\" height=\"326,2524\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Hinzuf&uuml;gen eines Ribbons<\/span><\/b><\/p>\n<p>Es erscheint der Designer f&uuml;r den Ribbon-Entwurf, der jeden Access-Entwickler, der sich bisher mit dem Ribbon herumschlagen durfte, neidisch werden l&auml;sst. Unser Ziel ist es nun, wie es auch unter Access m&ouml;glich ist, ein Command-Element per Ribbon-Definition hinzuzuf&uuml;gen, das die Schaltfl&auml;che <b>Alle Ordner senden\/empfangen <\/b>referenziert und f&uuml;r diese Schaltfl&auml;che eine neue Funktion hinterlegt. Dummerweise liefert die Toolbox aber &uuml;berhaupt kein Element namens <b>Command<\/b>.<\/p>\n<h2>XML-Definition erstellen<\/h2>\n<p>K&ouml;nnen wir also von einem VSTO-Add-In gar keine eingebauten Schaltfl&auml;chen mit neuen Funktionen versehen Doch, wir sind nur etwas in die falsche Richtung gelaufen. Wir k&ouml;nnen n&auml;mlich durchaus auch mit einer klassischen XML-Definition f&uuml;r das Ribbon arbeiten. Dazu f&uuml;gen wir einfach ein neues Objekt mit der Bezeichnung <b>Men&uuml;band (XML) <\/b>zum Projekt hinzu (wie weiter oben &#8211; rechter Mausklick auf das Projekt-Element im Projektmappen-Explorer, dann den Eintrag <b>Hinzuf&uuml;gen|Neues Element&#8230; <\/b>ausw&auml;hlen und im nun erscheinenden Dialog <b>Men&uuml;band (XML) <\/b>w&auml;hlen).<\/p>\n<p>Legen Sie den Namen <b>Ribbon_Outlook.vb <\/b>f&uuml;r das neue Element fest.<\/p>\n<p>Dies legt zwei neue Objekte im Projekt an: die Datei <b>Ribbon_Outlook.xml <\/b>mit der Ribbon-Definition und die Datei <b>Ribbon_Outlook.vb <\/b>mit den Funktionen, um das Ribbon zur Laufzeit anzuzeigen. Die Datei <b>Ribbon_Outlook.xml <\/b>ist bereits mit einer einfachen Ribbon-Definition ausgestattet, die ein neues Tab mit einer Gruppe und einer Schaltfl&auml;che hinzuf&uuml;gt:<\/p>\n<pre>&lt;xml version=\"1.0\" encoding=\"UTF-8\"&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2009\/07\/customui\" onLoad=\"Ribbon_Load\"&gt;\r\n   &lt;ribbon&gt;\r\n     &lt;tabs&gt;\r\n       &lt;tab idMso=\"TabAddIns\"&gt;\r\n         &lt;group id=\"MyGroup\"\r\n                label=\"My Group\"&gt;\r\n         &lt;\/group&gt;\r\n       &lt;\/tab&gt;\r\n     &lt;\/tabs&gt;\r\n   &lt;\/ribbon&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p>Wenn Sie nun einfach das Add-In mit <b>F5 <\/b>zum Testen starten und sich wundern, dass das Ribbon keine &auml;nderung aufweist, sind Sie genauso voreilig wie ich.<\/p>\n<p>Die <b>Ribbon_Outlook.vb<\/b>-Klasse enth&auml;lt zwar fast alles, was zum Anzeigen des Ribbons ben&ouml;tigt wird, allerdings fehlt noch das Bindeglied.<\/p>\n<p>Dabei handelt es sich um die folgende Methode, die Sie noch zur Klasse <b>ThisAddIn.vb <\/b>hinzuf&uuml;gen m&uuml;ssen (diese Methode ist in den Kommentarzeilen von <b>Ribbon_Outlook.vb <\/b>enthalten):<\/p>\n<pre>Protected Overrides Function CreateRibbonExtensibilityObject()<span style=\"color:blue;\"> As <\/span>Microsoft.Office.Core.IRibbonExtensibility\r\n     Return <span style=\"color:blue;\">New<\/span> Ribbon_Outlook()\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Direkt danach k&ouml;nnen Sie noch einen Test ausf&uuml;hren. Auch dies f&uuml;hrt nicht zum Erfolg, denn f&uuml;r das Tab ist das eingebaute Element mit der <b>idMso <\/b>namens <b>TabAddIns <\/b>festgelegt.<\/p>\n<p>Das hei&szlig;t, dass die darunter definierten Elemente unterhalb eines eingebauten Tab-Elements namens <b>TabAddIns <\/b>angelegt werden. Outlook besitzt aber kein solches Tab, also geschieht nichts. Also &auml;ndern wir f&uuml;r einen Test die XML-Definition des Tab-Elements in der Datei <b>Ribbon_Outlook.xml <\/b>wie folgt:<\/p>\n<pre>&lt;tab id=\"test\" label=\"Bla\"&gt;\r\n   &lt;group id=\"MyGroup\" label=\"My Group\"&gt;\r\n     &lt;button id=\"btnx\" label=\"bla\"\/&gt;\r\n   &lt;\/group&gt;\r\n&lt;\/tab&gt;<\/pre>\n<p>Das Ribbon erscheint nun wie in Bild 5. Nun wollen wir allerdings nicht, dass eine zus&auml;tzliche Schaltfl&auml;che erscheint, sondern wir m&ouml;chten die Schaltfl&auml;che <b>Alle Ordner senden\/empfangen <\/b>mit einer neuen Funktion versehen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_009.png\" alt=\"Neues Tab mit Gruppe und Schaltfl&auml;che\" width=\"549,6265\" height=\"134,8621\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Neues Tab mit Gruppe und Schaltfl&auml;che<\/span><\/b><\/p>\n<h2>Eingebaute Schaltfl&auml;che referenzieren<\/h2>\n<p>Um die Funktion der eingebauten Schaltfl&auml;che zu &uuml;berschreiben, f&uuml;gen wir der Ribbon-Definition ein <b>command<\/b>-Element hinzu, f&uuml;r das wir die <b>idMso <\/b>des betroffenen Befehls angeben m&uuml;ssen.<\/p>\n<p>Diese ermitteln wir aus einer Excel-Datei, die Sie unter der Adresse <b>http:\/\/go.microsoft.com\/fwlink\/LinkID=181052<\/b> herunterladen k&ouml;nnen. Das in diesem Download enthaltene Setup erstellt einen Ordner auf Ihrem System und speichert einige Excel-Dateien mit den Auflistungen der <b>idMsos <\/b>f&uuml;r verschiedene Anwendungen. Gerade f&uuml;r Outlook finden Sie hier eine ganze Reihe von Dateien, welche die f&uuml;r das Hauptfenster von Outlook und f&uuml;r die verschiedenen Fenster etwa zum Anzeigen von Mails, Kontakten et cetera ben&ouml;tigten OfficeIds liefern. F&uuml;r das Hauptfenster ben&ouml;tigen Sie die Datei <b>OutlookExplorerControls.xlsx<\/b>.<\/p>\n<p>Hier suchen wir nach Eintr&auml;gen, die etwa den Begriff <b>Send <\/b>in der Spalte <b>ControlName <\/b>enthalten, und finden recht weit oben den Eintrag <b>SendReceive<\/b>, der offensichtlich der gesuchte Eintrag ist (s. Bild 6).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_005.png\" alt=\"OfficeId-Bezeichnungen f&uuml;r die verschiedenen Ribbon-Elemente des Outlook-Hauptfensters\" width=\"649,559\" height=\"339,2498\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: OfficeId-Bezeichnungen f&uuml;r die verschiedenen Ribbon-Elemente des Outlook-Hauptfensters<\/span><\/b><\/p>\n<p>Die Ribbon-Definition k&ouml;nnen wir nun um das <b>ribbon<\/b>-Element und die untergeordneten Elemente erleichtern. Daf&uuml;r legen wir ein <b>commands<\/b>-Element mit einem <b>command <\/b>an, f&uuml;r dessen <b>idMso<\/b>-Eigenschaft wir den Wert <b>SendReceiveAll <\/b>einstellen:<\/p>\n<pre>&lt;xml version=\"1.0\" encoding=\"UTF-8\"&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2009\/07\/customui\" onLoad=\"Ribbon_Load\"&gt;\r\n   &lt;commands&gt;\r\n     &lt;command idMso=\"SendReceiveAll\" onAction=\"onAction_Command\"\/&gt;\r\n   &lt;\/commands&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p>Au&szlig;erdem legen wir f&uuml;r das Attribut <b>onAction <\/b>den Wert <b>onAction_Command <\/b>fest. Warum <b>onAction_Command <\/b>und nicht einfach <b>onAction<\/b>, wie wir es unter Access immer tun Weil die Signatur der <b>onAction<\/b>-Callbackfunktion f&uuml;r das <b>command<\/b>-Element anders aussieht als die von <b>onAction <\/b>etwa f&uuml;r <b>button<\/b>-Elemente. F&uuml;r das <b>button<\/b>-Element erwarten wir nur einen Parameter, welcher einen Verweis auf das aufrufende Ribbon-Element liefert.<\/p>\n<p>Die <b>onAction<\/b>-Funktion f&uuml;r ein <b>command<\/b>-Element ben&ouml;tigt jedoch noch einen zweiten Parameter, mit dem wir festlegen, ob die mit <b>command <\/b>referenzierte Funktion nach dem Aufruf der <b>onAction<\/b>-Methode eigentlich immer noch ausgef&uuml;hrt werden soll oder nicht.<\/p>\n<p>Wir wollen nun testweise daf&uuml;r sorgen, dass beim Bet&auml;tigen der <b>Alle Ordner senden\/empfangen<\/b>-Schaltfl&auml;che eine Meldung erscheint und danach wie &uuml;blich E-Mails abgerufen werden. Dazu f&uuml;gen Sie der Klasse <b>Ribbon_Outlook.vb <\/b>oben zun&auml;chst die folgende Anweisung hinzu:<\/p>\n<pre>Imports System.Windows.Forms<\/pre>\n<p>Diese importiert den Namespace, der das <b>MessageBox<\/b>-Objekt enth&auml;lt. Danach f&uuml;gen wir der Klasse die Methode <b>onAction_Command <\/b>aus Listing 3 hinzu. Diese liefert, wie oben angegeben, mit den Parametern sowohl einen Verweis auf das aufrufende Element sowie den <b>Boolean<\/b>-Parameter <b>cancelDefault<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>OnAction_Command(ctl<span style=\"color:blue;\"> As <\/span>Office.IRibbonControl, ByRef cancelDefault<span style=\"color:blue;\"> As Boolean<\/span>)\r\n     MessageBox.Show(\"Control: \" + ctl.Id.ToString())\r\n     cancelDefault = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Methode, die beim Aufrufen von Alle Ordner senden\/empfangen eine Meldung anzeigen soll<\/span><\/b><\/p>\n<p>Die Methode soll eine Meldung anzeigen und dann die ausgel&ouml;ste Funktion ausf&uuml;hren, daher wird <b>cancelDefault <\/b>auf <b>False <\/b>eingestellt. Der Wert <b>True <\/b>w&uuml;rde daf&uuml;r sorgen, dass durch das Bet&auml;tigen von <b>Alle Ordner senden\/empfangen <\/b>keine Mails abgerufen werden.<\/p>\n<p>Das Ergebnis sehen Sie nach einem erneuten Start und dem Mausklick auf <b>Alle Ordner senden\/empfangen <\/b>und in Bild 7. Nun liegt es an uns, statt dieser einfachen Meldung eine Funktion zu hinterlegen, welche es dem Benutzer erleichtert, nicht so oft E-Mails abzurufen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_010.png\" alt=\"Anzeigen einer Meldung beim Abrufen von E-Mails\" width=\"424,7115\" height=\"270,6127\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Anzeigen einer Meldung beim Abrufen von E-Mails<\/span><\/b><\/p>\n<h2>E-Mails nur in bestimmtem Zeitfenster laden<\/h2>\n<p>Wenn Sie sich entscheiden, beispielsweise nur zwischen 12:00 und 13:00 Uhr E-Mails abrufen zu wollen, k&ouml;nnten Sie die Methode <b>OnAction_Command <\/b>auch wie in Listing 4 definieren.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>OnAction_Command(ctl<span style=\"color:blue;\"> As <\/span>Office.IRibbonControl, ByRef cancelDefault<span style=\"color:blue;\"> As Boolean<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>datZeit<span style=\"color:blue;\"> As Date<\/span>Time\r\n     <span style=\"color:blue;\">Dim <\/span>datStart<span style=\"color:blue;\"> As Date<\/span>Time\r\n     <span style=\"color:blue;\">Dim <\/span>datEnde<span style=\"color:blue;\"> As Date<\/span>Time\r\n     datZeit = DateTime.Now\r\n     datStart = <span style=\"color:blue;\">New<\/span> DateTime(datZeit.Year, datZeit.Month, datZeit.Day, 12, 0, 0)\r\n     datEnde = <span style=\"color:blue;\">New<\/span> DateTime(datZeit.Year, datZeit.Month, datZeit.Day, 13, 0, 0)\r\n     <span style=\"color:blue;\">If <\/span>(datZeit &gt; datStart And datZeit &lt; datEnde)<span style=\"color:blue;\"> Then<\/span>\r\n         cancelDefault = <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         MessageBox.Show(\"Mails d&uuml;rfen nur zwischen 12:00 und 13:00 Uhr abgerufen werden.\")\r\n         cancelDefault = <span style=\"color:blue;\">True<\/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 4: Diese Methode sorgt daf&uuml;r, dass nur zwischen 12:00 und 13:00 Uhr E-Mails abgerufen werden k&ouml;nnen.<\/span><\/b><\/p>\n<p>Die Methode verwendet drei <b>DateTime<\/b>-Variablen. Die Variable <b>datZeit <\/b>wird &uuml;ber die Methode <b>Now <\/b>mit der aktuellen Zeit und dem aktuellen Datum gef&uuml;llt. <b>datStart <\/b>erh&auml;lt ebenfalls Datum und Zeit, wobei die Werte f&uuml;r das Jahr, den Monat und den Tag aus <b>datZeit <\/b>entnommen werden. Die Uhrzeit wird auf <b>12<\/b>, die Minute auf <b>0 <\/b>und die Sekunde auf <b>0 <\/b>eingestellt. F&uuml;r <b>datEnde <\/b>gilt das Gleiche, nur dass wir hier die Uhrzeit auf <b>13 <\/b>einstellen.<\/p>\n<p>Sollte sich der Wert der aktuellen Uhrzeit aus <b>datZeit<\/b> zwischen <b>datStart <\/b>und <b>datEnde <\/b>befinden, ruft Outlook E-Mails wie gewohnt ab. Falls der Benutzer aber au&szlig;erhalb dieses Zeitfensters auf die E-Mails zugreifen will, erscheint die Meldung aus Bild 8 und der Abruf der Mails wird durch das Einstellen des Wertes <b>True <\/b>f&uuml;r den R&uuml;ckgabeparameter <b>cancelDefault <\/b>unterbunden.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_011.png\" alt=\"Keine Mails zwischen 12:00 und 13:00 Uhr\" width=\"499,6607\" height=\"234,0603\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Keine Mails zwischen 12:00 und 13:00 Uhr<\/span><\/b><\/p>\n<h2>E-Mail-Zugriffszeiten in den Optionen einstellen<\/h2>\n<p>Toll w&auml;re es nun noch, wenn der Benutzer die Zeiten, in denen er auf die E-Mails zugreifen kann, per Option einstellen k&ouml;nnte. Dies soll dann etwa wie in Bild 9 aussehen. Der Backstage-Bereich von Outlook soll dann mit dem neu zu erstellenden vorletzten Tab auf der linken Seite den Text <b>E-Mail-Abruf einschr&auml;nken <\/b>anzeigen. Dieser Tab soll einen Bereich &ouml;ffnen, der die Startzeit und die Endzeit f&uuml;r den Zugriff auf neue E-Mails regelt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_012.png\" alt=\"Optionen zum Einstellen der Zugriffszeiten f&uuml;r den E-Mail-Abruf\" width=\"424,7115\" height=\"456,9777\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Optionen zum Einstellen der Zugriffszeiten f&uuml;r den E-Mail-Abruf<\/span><\/b><\/p>\n<h2>Optionen speichern<\/h2>\n<p>Zum Speichern der Optionen verwenden wir den Bereich <b>Einstellungen<\/b> des Projekts, den Sie durch einen Doppelklick auf den Eintrag <b>My Project <\/b>im Projektmappen-Explorer &ouml;ffnen. Hier k&ouml;nnen Sie die f&uuml;r das Add-In ben&ouml;tigten Einstellungen speichern. Im vorliegenden Fall legen wir zwei Optionen namens <b>Startzeit <\/b>und <b>Endzeit <\/b>an, beide mit dem Typ <b>Date <\/b>und dem Bereich <b>Benutzer<\/b>. Als Wert stellen wir das aktuelle Datum plus die gew&uuml;nschten Uhrzeiten ein (s. Bild 10).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1095_013.png\" alt=\"Speichern der Anwendungsoptionen\" width=\"599,593\" height=\"321,9874\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Speichern der Anwendungsoptionen<\/span><\/b><\/p>\n<h2>Definition des Backstage-Bereichs<\/h2>\n<p>Um den Backstage-Bereich zu definieren, &ouml;ffnen Sie wieder die Datei <b>Ribbon_Outlook.xml<\/b> (s. Listing 5). Die dortige Definition des Ribbons erweitern Sie um das <b>backstage<\/b>-Element. Diesem f&uuml;gen wir ein <b>tab<\/b>-Element hinzu, wobei es sich um die Lasche am linken Rand handelt, die per Mausklick den eigentlichen Bereich &ouml;ffnet. Das Element ben&ouml;tigt ein <b>id<\/b>-Attribut, ein <b>label<\/b>-Attribut und die Angabe, wo es eingef&uuml;gt werden soll &#8211; in diesem Fall vor dem <b>Beenden<\/b>-Tab. Die <b>idMso <\/b>f&uuml;r dieses Element finden wir wieder in der bereits weiter oben verwendeten Excel-Tabelle. Sie hei&szlig;t <b>FileCloseAndLogOff<\/b>.<\/p>\n<pre>&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2009\/07\/customui\" onLoad=\"Ribbon_Load\"&gt;\r\n   &lt;commands&gt;\r\n     &lt;command idMso=\"SendReceiveAll\" onAction=\"onAction_Command\"\/&gt;\r\n   &lt;\/commands&gt;\r\n   &lt;backstage&gt;\r\n     &lt;tab id=\"tabOutlookAddIn\" label=\"E-Mail-Abruf einsch&auml;nken\" insertBeforeMso=\"FileCloseAndLogOff\"&gt;\r\n       &lt;firstColumn&gt;\r\n         &lt;group id=\"grpZeiten\" label=\"E-Mail-Abruf einschr&auml;nken\"&gt;\r\n           &lt;topItems&gt;\r\n             &lt;labelControl id=\"lblDescription\" label=\"Legen Sie die Uhrzeiten fest, in denen E-Mail-Zugriff erlaubt \r\n               sein soll.\"\/&gt;\r\n             &lt;layoutContainer id=\"layStartzeit\" align=\"left\" layoutChildren=\"horizontal\"&gt;\r\n               &lt;editBox id=\"txtStartzeit\" label=\"Startzeit:\" getText=\"getText\" onChange=\"onChange\"\/&gt;\r\n             &lt;\/layoutContainer&gt;\r\n             &lt;layoutContainer id=\"layEndzeit\" align=\"left\" layoutChildren=\"horizontal\"&gt;\r\n               &lt;editBox id=\"txtEndzeit\" label=\"Endzeit:\" getText=\"getText\" onChange=\"onChange\"\/&gt;\r\n             &lt;\/layoutContainer&gt;\r\n             &lt;button label=\"Speichern\" onAction=\"onAction\" id=\"btnSpeichern\"\/&gt;\r\n           &lt;\/topItems&gt;\r\n         &lt;\/group&gt;\r\n       &lt;\/firstColumn&gt;\r\n     &lt;\/tab&gt;\r\n   &lt;\/backstage&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Definition des Ribbons inklusive Backstage-Bereich<\/span><\/b><\/p>\n<p>Darin legen wir das <b>firstColumn<\/b>-Element an, ein <b>group<\/b>-Element (wieder mit <b>id <\/b>und <b>label<\/b>) und das <b>topItems<\/b>-Element. Darin folgt die Beschreibung der folgenden Steuer-elemente mit einem <b>labelControl<\/b>-Element. Die folgenden <b>editBox<\/b>-Elemente sollen die Startzeit und die Endzeit aufnehmen. Sie hei&szlig;en <b>txtStartzeit <\/b>und <b>txtEndzeit<\/b>.<\/p>\n<p>Beide enthalten jeweils das <b>getText<\/b>&#8211; und das <b>onChange<\/b>-Callback-Attribut. F&uuml;r das <b>getText<\/b>-Attribut geben wir eine VB-Prozedur an, welche den im Textfeld anzuzeigenden Text ermittelt. F&uuml;r das <b>onChange<\/b>-Attribut erstellen wir eine Prozedur, welche nach dem &auml;ndern des Inhalts durch den Benutzer die &auml;nderungen in die zugrunde liegenden lokalen Variablen &uuml;bertragen soll.<\/p>\n<p>Fehlt noch die Schaltfl&auml;che <b>Speichern<\/b>, die wir als <b>button<\/b>-Element definieren. Sie bekommt au&szlig;erdem noch das <b>onAction<\/b>-Attribut, welches beim Anklicken der Schaltfl&auml;che die Methode <b>onAction <\/b>aufruft.<\/p>\n<h2>Backstage mit Leben f&uuml;llen<\/h2>\n<p>Solange der Backstage-Bereich ge&ouml;ffnet ist, sollen die aktuellen Werte f&uuml;r die Startzeit und die Endzeit in den beiden Variablen <b>datStartzeit <\/b>und <b>datEndzeit <\/b>vorgehalten werden, die wir wie folgt im Modul <b>Ribbon_Outlook.vb <\/b>deklarieren:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>datStartzeit<span style=\"color:blue;\"> As Date<\/span>Time\r\n<span style=\"color:blue;\">Public <\/span>datEndzeit<span style=\"color:blue;\"> As Date<\/span>Time<\/pre>\n<p>Beim Anzeigen des Backstage-Tabs mit den Optionen f&uuml;r unser Add-In wird zun&auml;chst f&uuml;r jedes Textfeld je einmal die Funktion <b>GetText <\/b>aufgerufen. Diese f&uuml;llt die Variablen <b>datStartzeit <\/b>und <b>datEndzeit<\/b>, indem sie die Werte aus den Einstellungen ausliest.<\/p>\n<p>Der Zugriff darauf erfolgt ganz einfach &uuml;ber die entsprechenden Eigenschaften <b>Startzeit <\/b>und <b>Endzeit <\/b>des Objekts <b>My.Settings<\/b>. Danach pr&uuml;ft die Funktion &uuml;ber den Wert der Eigenschaft <b>id <\/b>des Parameters <b>control<\/b>, von welchem Steuer-element sie aufgerufen wurde.<\/p>\n<p>Handelt es sich um <b>txtStartzeit<\/b>, wird der Wert aus <b>datStartzeit <\/b>mit dem Funktionswert <b>GetText <\/b>zur&uuml;ckgegeben. Gleiches gilt, wenn die Funktion von <b>txtEndzeit <\/b>aufgerufen wird &#8211; dann landet der Inhalt der Variablen <b>datEndzeit <\/b>im R&uuml;ckgabewert:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>GetText(control<span style=\"color:blue;\"> As <\/span>Office.IRibbonControl) _\r\n        <span style=\"color:blue;\"> As String<\/span>\r\n     datStartzeit = My.Settings.Startzeit\r\n     datEndzeit = My.Settings.Endzeit\r\n     Select Case control.Id\r\n         <span style=\"color:blue;\">Case <\/span>\"txtStartzeit\"\r\n             GetText = datStartzeit.ToShortTimeString()\r\n         <span style=\"color:blue;\">Case <\/span>\"txtEndzeit\"\r\n             GetText = datEndzeit.ToShortTimeString()\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             MessageBox.Show(\"GetText from: \" _\r\n                 + control.Id.ToString())\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Function<\/span> <\/pre>\n<p>Somit sind die Textfelder schon einmal gef&uuml;llt. Nun schauen wir uns an, was geschieht, wenn der Benutzer diese &auml;ndert. Dies l&ouml;st dieMethode <b>OnChange <\/b>f&uuml;r das jeweilige Steuer-element aus, das wieder mit dem Parameter <b>control <\/b>&uuml;bergeben wird. Der Parameter <b>text <\/b>wiederum liefert den Wert des Textfeldes nach der &auml;nderung.<\/p>\n<p>Je nach aufrufendem Steuer-element schreibt die Methode den aktuellen Wert in die Variable <b>datStartzeit <\/b>oder <b>datEndzeit<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>OnChange(control<span style=\"color:blue;\"> As <\/span>Office.IRibbonControl, text<span style=\"color:blue;\"> As String<\/span>)\r\n     Select Case control.Id\r\n         <span style=\"color:blue;\">Case <\/span>\"txtStartzeit\"\r\n             datStartzeit = text\r\n         <span style=\"color:blue;\">Case <\/span>\"txtEndzeit\"\r\n             datEndzeit = text\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Um die &auml;nderungen zu speichern, muss der Benutzer noch die Schaltfl&auml;che <b>btnSpeichern <\/b>bet&auml;tigen. Dies l&ouml;st die folgende Prozedur aus, welche schlicht die Werte von <b>datStartzeit <\/b>und <b>datEndzeit <\/b>in die entsprechenden Eigenschaften von <b>My.Settings <\/b>schreibt und die ge&auml;nderten Werte mit der <b>Save<\/b>-Methode speichert:<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>OnAction(control<span style=\"color:blue;\"> As <\/span>Office.IRibbonControl)\r\n     Select Case control.Id\r\n         <span style=\"color:blue;\">Case <\/span>\"btnSpeichern\"\r\n             My.Settings.Startzeit = datStartzeit\r\n             My.Settings.Endzeit = datEndzeit\r\n             My.Settings.Save()\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             MessageBox.Show(\"OnAction from: \" + _\r\n                 control.Id.ToString())\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Die erste L&ouml;sung dieses Beitrags sch&auml;rft die Sinne f&uuml;r die H&auml;ufigkeit des E-Mail-Abrufs und arbeitet rein mit VBA. Die zweite schr&auml;nkt den Zugriff je nach den W&uuml;nschen des Benutzers auf eine bestimmte Uhrzeit ein. Hierf&uuml;r ist ein COM-Add-In n&ouml;tig, das Sie mit Visual Studio erzeugen k&ouml;nnen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>OutlookAddIn.rar<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/37E0041D-2539-4D70-B92A-30E962F7938D\/aiu_1095.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich wei&szlig; nicht, wie es Ihnen geht, aber ich gestehe: Mail, Facebook und Co. sind echte Zeitfresser in meinem Leben. Wenn ich gerade mal nicht vorw&auml;rts komme, lese ich abwechselnd E-Mails (manchmal im Minutentakt) oder schaue, was es bei Facebook oder anderen sozialen Netzwerken f&uuml;r Neuigkeiten gibt. Wie viel Zeit k&ouml;nnte man sparen, wenn man diese Ablenkungen nicht direkt vor der Nase h&auml;tte &#8211; direkt neben den zu bearbeitenden Dokumenten oder Anwendungen! Dieser Beitrag zeigt, wie Sie zumindest den Umgang mit E-Mails etwas achtsamer gestalten oder diesen gleich auf bestimmte Uhrzeiten einschr&auml;nken k&ouml;nnen.<\/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":[662017,66042017,44000026],"tags":[],"class_list":["post-55001095","post","type-post","status-publish","format-standard","hentry","category-662017","category-66042017","category-Interaktiv"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Effizienz-Hacks: Mailabruf erschweren - 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\/EffizienzHacks_Mailabruf_erschweren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Effizienz-Hacks: Mailabruf erschweren\" \/>\n<meta property=\"og:description\" content=\"Ich wei&szlig; nicht, wie es Ihnen geht, aber ich gestehe: Mail, Facebook und Co. sind echte Zeitfresser in meinem Leben. Wenn ich gerade mal nicht vorw&auml;rts komme, lese ich abwechselnd E-Mails (manchmal im Minutentakt) oder schaue, was es bei Facebook oder anderen sozialen Netzwerken f&uuml;r Neuigkeiten gibt. Wie viel Zeit k&ouml;nnte man sparen, wenn man diese Ablenkungen nicht direkt vor der Nase h&auml;tte - direkt neben den zu bearbeitenden Dokumenten oder Anwendungen! Dieser Beitrag zeigt, wie Sie zumindest den Umgang mit E-Mails etwas achtsamer gestalten oder diesen gleich auf bestimmte Uhrzeiten einschr&auml;nken k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-14T13:34:28+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/3de6dcca6ac546ad983a9b066717cdc0\" \/>\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=\"21\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Effizienz-Hacks: Mailabruf erschweren\",\"datePublished\":\"2020-05-14T13:34:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/\"},\"wordCount\":3691,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/3de6dcca6ac546ad983a9b066717cdc0\",\"articleSection\":[\"2017\",\"4\\\/2017\",\"Interaktiv\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/\",\"name\":\"Effizienz-Hacks: Mailabruf erschweren - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/3de6dcca6ac546ad983a9b066717cdc0\",\"datePublished\":\"2020-05-14T13:34:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/3de6dcca6ac546ad983a9b066717cdc0\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/3de6dcca6ac546ad983a9b066717cdc0\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/EffizienzHacks_Mailabruf_erschweren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Effizienz-Hacks: Mailabruf erschweren\"}]},{\"@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":"Effizienz-Hacks: Mailabruf erschweren - 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\/EffizienzHacks_Mailabruf_erschweren\/","og_locale":"de_DE","og_type":"article","og_title":"Effizienz-Hacks: Mailabruf erschweren","og_description":"Ich wei&szlig; nicht, wie es Ihnen geht, aber ich gestehe: Mail, Facebook und Co. sind echte Zeitfresser in meinem Leben. Wenn ich gerade mal nicht vorw&auml;rts komme, lese ich abwechselnd E-Mails (manchmal im Minutentakt) oder schaue, was es bei Facebook oder anderen sozialen Netzwerken f&uuml;r Neuigkeiten gibt. Wie viel Zeit k&ouml;nnte man sparen, wenn man diese Ablenkungen nicht direkt vor der Nase h&auml;tte - direkt neben den zu bearbeitenden Dokumenten oder Anwendungen! Dieser Beitrag zeigt, wie Sie zumindest den Umgang mit E-Mails etwas achtsamer gestalten oder diesen gleich auf bestimmte Uhrzeiten einschr&auml;nken k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-14T13:34:28+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/3de6dcca6ac546ad983a9b066717cdc0","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"21\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Effizienz-Hacks: Mailabruf erschweren","datePublished":"2020-05-14T13:34:28+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/"},"wordCount":3691,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/3de6dcca6ac546ad983a9b066717cdc0","articleSection":["2017","4\/2017","Interaktiv"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/","url":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/","name":"Effizienz-Hacks: Mailabruf erschweren - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/3de6dcca6ac546ad983a9b066717cdc0","datePublished":"2020-05-14T13:34:28+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/3de6dcca6ac546ad983a9b066717cdc0","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/3de6dcca6ac546ad983a9b066717cdc0"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/EffizienzHacks_Mailabruf_erschweren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Effizienz-Hacks: Mailabruf erschweren"}]},{"@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\/55001095","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=55001095"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001095\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001095"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}