Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2017.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Effizienz-Hacks: Mailabruf erschweren

Ich weiß nicht, wie es Ihnen geht, aber ich gestehe: Mail, Facebook und Co. sind echte Zeitfresser in meinem Leben. Wenn ich gerade mal nicht vorwärts komme, lese ich abwechselnd E-Mails (manchmal im Minutentakt) oder schaue, was es bei Facebook oder anderen sozialen Netzwerken für Neuigkeiten gibt. Wie viel Zeit könnte man sparen, wenn man diese Ablenkungen nicht direkt vor der Nase hä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änken können.

Outlook ist auf meinem Desktop immer geöffnet. Kein Wunder: Ich rufe E-Mails damit ab, verwalte Kontakte damit und tracke die für meine Projekte aufgebrachte Arbeitszeit. Leider tracke ich damit nicht die Zeit, die für das Lesen von E-Mails oder für das Surfen im Internet draufgeht. Würde ich das mal vor Augen gehalten bekommen, wäre ich vielleicht ein wenig achtsamer bei diesem Thema.

Letztlich gibt es nur einen ganz kleinen Prozentsatz von E-Mails, die so wichtig sind, dass sie ganz schnell erledigt werden müssen. Und wer wirklich dringend etwas von einem möchte, der wird wahrscheinlich ohnehin zum Hörer greifen.

Und wenn wir ehrlich sind: Da immer mehr E-Mails, die wirklich nicht wichtig sind, mit der höchsten Priorität versendet werden, ist das rote Aufrufezeichen neben einer E-Mail auch nicht unbedingt Anlass für übertriebene Hektik (man munkelt, einige Benutzer hätten die höchste Priorität als Standard eingestellt und wüssten nicht, wie man diese Einstellung ändert ...). Nun gibt es grob drei Typen von E-Mail-Konsumenten:

  • Der Ich-will-nichts-verpassen-Konsument: Er hat Outlook so eingestellt, dass automatisch alle 60 Sekunden neue E-Mails abgerufen werden und hechelt direkt beim Eingang des Signals für eine eingehende E-Mail zu Outlook.
  • Der Prokrastinierer: Er erwartet nicht wirklich wichtige E-Mails und lässt nicht automatisch abrufen. Dafür ruft er selbst immer E-Mails ab, wenn die eigentliche Arbeit zu langweilig, zu stressig oder zu anstrengend ist.
  • Der Gelegenheitskonsument: Er ist völlig entspannt und weiß, 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.

Gerade beim Prokrastinierer ist Achtsamkeit ein wichtiges Schlüsselwort: Letztlich weiß er, dass es lediglich Zeit kostet und die Erledigung der eigentlichen Aufgabe hinauszögert, wenn er E-Mails abruft. Dennoch macht er es. Das ist genau wie der Griff zur Zigarette, zur Süßigkeit oder zum Kaffee. Wie aber können wir dem Dauer-Mail-Checker helfen, von seinem Verhalten loszukommen? Dazu gibt es zwei Ansätze, die ich in den letzten Tagen testweise einsetze:

  • Jedes Mal, wenn ich E-Mails abrufe und mindestens eine E-Mail heruntergeladen wird, trägt Outlook dies in den Kalender ein.
  • Jedes Mal, wenn ich auf Alle Ordner senden/empfangen klicke, erscheint eine Meldung, gegebenenfalls mit Countdown, die mich fragt, ob ich gerade wirklich E-Mails abrufen möchte.

E-Mail-Lese-Tracker

Die erste Variante liefert im Kalender beispielsweise eine Ansicht wie in Bild 1. Jeder grüne Eintrag entspricht einem erfolgreichen Abruf einer E-Mail.

Jeder grüne Eintrag entspricht einem erfolgreichen Mail-Abruf.

Bild 1: Jeder grüne Eintrag entspricht einem erfolgreichen Mail-Abruf.

Was soll dies bewirken? Es zeigt dem Benutzer, wie oft er an diesem Tag tatsä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önnte auch anders aussehen ...

Spätestens, wenn der Benutzer die übrigen Einträge im Kalender nicht mehr lesen kann, wird er über seinen E-Mail-Konsum nachdenken. Und falls nicht, haben wir ja später noch eine weitere Möglichkeit, die Achtsamkeit zu erhöhen.

Schauen wir uns zunächst die technische Umsetzung dieser Lösung an.

Outlook-Mailabrufe in den Kalender eintragen

Dazu fügen wir dem Modul ThisOutlookSession des VBA-Projekts von Outlook einige Zeilen Code hinzu. Den VBA-Editor von Outlook öffnen Sie übrigens am schnellsten mit der Tastenkombination Alt + F11. Dort finden Sie dann auch das genannte Modul, in dem wir zunächst die folgenden drei Variablen deklarieren:

Dim WithEvents objOutlook As Outlook.Application
Dim WithEvents objPosteingang As Outlook.Folder
Dim WithEvents objPosteingangItems As Outlook.Items

Außerdem benötigen wir noch eine Variable, in der wir das Datum der letzten E-Mail-Abfrage speichern:

Dim datLastMail As Date

Danach legen wir die Ereignisprozedur Application_Startup an, was Sie durch die Auswahl des Eintrags Application im linken Kombinationsfeld des Codefensters und Auswahl des Eintrags Startup im rechten Kombinationsfeld erledigen können. Diese Prozedur füllt lediglich die drei zuvor deklarierten Objektvariablen mit den entsprechenden Objekten (s. Listing 1).

Public Sub Application_Startup()
     Set objOutlook = Application
     Set objPosteingang = objOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
     Set objPosteingangItems = objPosteingang.Items
End Sub

Listing 1: Diese Methode wird beim Start von Outlook ausgeführt.

objOutlook erhält einen Verweis auf das Application-Objekt der aktuellen Outlook-Instanz. objPosteingang nimmt einen Verweis auf den Outlook-Ordner Posteingang auf, den wir über den MAPI-Namespace und die Methode GetDefaultFolder mit dem Wert olFolderInbox als Parameter ermitteln. Schließlich erhält die Items-Variable objPosteingangItems einen Verweis auf die Items-Auflistung des in objPosteingang gespeicherten Ordners.

Für das Objekt objPosteingangItems legen wir eine Ereignisprozedur an, die durch das Ereignis ItemAdd ausgelöst wird. Um die leere Ereignisprozedur zu erstellen, wählen wir wieder zwei Einträge in den beiden Kombinationsfeldern des VBA-Editors aus – links den Eintrag objPosteingangItems und rechts ItemAdd. Diese Ereignisprozedur füllen wir wie in Listing 2.

Private Sub objPosteingangItems_ItemAdd(ByVal Item As Object)
     Dim objCalendar As Outlook.Folder
     Dim datLastMailTemp As Date
     Dim objAppointment As Outlook.AppointmentItem
     datLastMailTemp = DateSerial(Year(Now), Month(Now), Day(Now)) + TimeSerial(Hour(Now), Minute(Now), 0)
     If Not datLastMailTemp = datLastMail Then
         Set objCalendar = objOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)
         Set objAppointment = objOutlook.CreateItem(olAppointmentItem)
         With objAppointment
             .Subject = "Mailabruf " & Format(Now, "hh:nn")
             .Start = Now
             .Duration = 30
             .Categories = "Mail abrufen"
             .ReminderSet = False
             .Save
             Debug.Print "Geschrieben " & .Subject
         End With
     End If
     datLastMail = datLastMailTemp
End Sub

Listing 2: Dieses Ereignis wird ausgelöst, wenn eine neue E-Mail in der Items-Liste landet.

Die Prozedur nimmt mit dem Parameter Item das neue Element des Ordners entgegen, in diesem Fall eine E-Mail. Die Prozedur definiert eine Variable namens obj­Calendar, welche den Kalender referenzieren soll und eine AppointmentItem-Variable für den neu anzulegenden Termin. Außerdem ermitteln wir mit der DateSerial-Funktion eine Zeitangabe, welche das aktuelle Datum und die aktuelle Uhrzeit ermittelt. Dabei soll als Anzahl der Sekunden der Wert 0 übergeben werden, damit pro Minute nur ein Mail-Abruf aufgezeichnet werden kann.

Nun folgt eine Prüfung, ob der in der modulweit deklarierten Variablen datLastMail gespeicherte Wert mit dem Wert aus datLastMailTemp übereinstimmt. Ist dies der Fall, dann wurde in dieser Minute bereits einmal eine E-Mail abgerufen – und mehr als einen Eintrag pro Minute wollen wir dem Kalender nicht zumuten.

Anderenfalls wird die Variable objCalendar mit dem Kalender-Ordner gefüllt, welchen wir über die Methode GetDefaultFolder des MAPI-Ordners mit dem Wert olFolderCalendar als Parameter referenzieren. objAppointment füllen wir mit der Methode CreateItem, der wir den Wert olAppointmentItem übergeben. So wird ein AppointmentItem-Element erstellt.

Danach stellt die Prozedur einige Werte für das neue AppointmentItem-Element ein. Der Betreff (Subject) soll den Text Mailabruf sowie die aktuelle Uhrzeit im Format hh:nn als Inhalt anzeigen. Die Eigenschaft Duration legt mit dem Wert 30 die Dauer des Elements in Minuten fest. Als Kategorie stellen wir Mail abrufen ein. Diese Kategorie müssen Sie noch als Kategorie mit dem Dialog Farbkategorien einrichten (s. Bild 2). Außerdem deaktivieren wir mit ReminderSet = False die Anzeige von Erinnerungen zu diesem Termin. Schließlich speichert die Save-Methode den Termin und sorgt so für dessen Anzeige in Outlook. Damit der Vergleich des Zeitpunkts des aktuellen Mailabrufs mit dem des vorherigen gelingt, müssen wir nun noch den Wert von datLastMailTemp in datLastMail eintragen.

Einstellen der Farbe für die Kategorie Mail abrufen

Bild 2: Einstellen der Farbe für die Kategorie Mail abrufen

Wie funktioniert es?

Wenn Sie nun direkt eine Testmail an sich selbst verschicken, Mails abrufen und sich wundern, warum kein entsprechender Termin im Kalender eingetragen wird – keine Sorge: Es fehlt nur noch ein kleiner Schritt. Sie müssen nämlich dafür sorgen, dass die Ereignisprozedur Application_Startup ausgelöst wird. Diese füllt erst die Variablen mit den gewünschten Objekten und sorgt dann dafür, dass die Ereignisprozedur für die Variable objPosteingang­Items beim nächsten Eingang einer E-Mail ausgelöst wird. Dies können Sie in diesem Fall manuell erledigen, indem Sie die Einfügemarke innerhalb der Prozedur platzieren und die Taste F5 betätigen. Oder Sie starten Outlook einfach neu, um die Prozedur automatisch auszulösen.

Achtsamkeit beim Mailabruf

Damit kommen wir nun zur zweiten Lösung, die direkt beim Klick auf die Schaltfläche Alle Ordner senden/empfangen ausgelöst wird und eine passende Meldungsbox anzeigen soll. Die schlechte Nachricht ist: Es gibt keine Möglichkeit, den Mausklick auf diese Schaltfläche des Ribbons mithilfe einer VBA-basierten Lösung abzufangen. Stattdessen benötigen wir ein COM-Add-In auf Basis von Visual Studio. Zum Glück gibt es Visual Studio 2015 in der Community-Edition kostenlos für einzelne Entwickler und kleinere Betriebe, sodass keine zusätzlichen Kosten für diese sehr interessante Programmierung einer Erweiterung von Outlook anfallen. Sie müssen sich lediglich Visual Studio 2015 Community herunterladen und dieses installieren. Außerdem benötigen Sie alle aktuellen Erweiterungen, die dann auch die für die Programmierung von COM-Add-Ins für die Office-Anwendungen benötigten Vorlagen mitliefern.

Projekt anlegen

Nach dem Starten von Visual Studio legen Sie ein neues Projekt des Typs Visual Basic|Office/SharePoint|VSTO-Add-Ins|Outlook 2013 und 2016 VSTO-Add-In an. Legen Sie als Name OutlookAddIn fest (s. Bild 3).

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.