Outlook 2007 – Definierte Regeln per Makro aufrufen

Seit letzter Woche lese ich /arbeite ich mich durch das Buch Outlook 2007 automatisiert von Scott Hanselman. Zufällig fand ich auch noch folgenden Artikel im Internet, den ich nicht verheimlichen möchte, da das Thema Regeln mit VBA total spannend und interessant ist.

Von einem Freund erhielt ich vor einigen Wochen die Problemstellung geschildert, dass dieser Regeln in Outlook ausführen möchte. Genauer:

… auf der Party¹ hatten wir über ein Makro gesprochen, das im Outlook alle Regeln ausführt. Also nur durch Anklicken eines Symbols den Posteingang aufräumt, sofern dort entsprechende Regeln vorhanden. Es wäre cool, wenn du das hinbekommen könntest. …

Das sind zwei Anforderungen:

  • die Regeln von Outlook sollen per VBA angesteuert werden können
  • die Regeln sollen pro Ordner ausgeführt werden können, also nicht nur auf den Posteingang

Unter den Vorgängerversionen von Outlook 2007 funktioniert dieses nicht, weil das Objektmodell von Outlook dort keinen Zugriff auf die Regeln bzw. den Regelassistenten unterstützt. Hier könnte man nur, ähnlich der Lösung bei einer automatischen Synchronisation über ActiveSync per Bluetooth über phoneAlarm, Nachrichten schicken. Doch Robert hat die 2007er Version, so dass alles für eine perfekte Lösung vorhanden ist. Scott Hanselman hat gestern gezeigt, wie leicht Outlook 2007 automatisiert werden kann. Scott hat nur zwei Zeilen Anwendungscode benötigt und auch bei dieser Aufgabenstellung werden es nur unwesentlich mehr, wie ich heute beim Lösen der Problemstellung festgestellt habe.

Damit Makros unter Outlook funktionieren, muss die Sicherheit etwas weniger restriktiv gesetzt sein. Das findet sich unter Extras, Makro, Sicherheit, Makrosicherheit. Dort ist der Wert Warnungen für alle Makros bzw. Keine Sicherheitsprüfung für Makros einzustellen.

Outlook 2007 Alle Regeln Per VBA Makros Erstellen 05d2e716-ee33-41ec-8185-9b0fa7bb65c4 in Outlook 2007 – Definierte Regeln per Makro aufrufen

Wenn nicht, erscheint bei der Ausführung von unsignierten Makros eine Fehlermeldung.

Outlook 2007 Alle Regeln Per VBA Deaktiviert 998c3899-7fae-4a33-a4e4-8a70e317088a in Outlook 2007 – Definierte Regeln per Makro aufrufen

Wenn der Wert Warnungen für alle Makros gewählt wird, erscheint dann eine Warnung beim Öffnen der Makros über Extra, Makros. Makros bleiben über die Symbolleiste aber deaktiviert. Demzufolge ist dann nur der Wert Keine Sicherheitsüberprüfung für Makros sinnvoll.

Makro Sicherheitshinweis Ff5658de-375d-4f45-88ab-93f750724332 in Outlook 2007 – Definierte Regeln per Makro aufrufen

Das Makro wird dann über Extras, Makro, Makros eingefügt. Dazu muss zuerst ein Name bei Makroname eingegeben und dann auf Erstellen geklickt werden. Als Name ist z. B. RunAllRules selbstsprechend. Im dem darauffolgenden Fenster ist zuerst der folgende Anwendungscode einzufügen und danach dieses Fenster wieder zu schließen (Sub RunAllRules() und End Sub wird automatisch eingefügt).

Sub RunAllRules()
    Dim outlookStore As Outlook.Store
    Dim allRules As Outlook.Rules
    Dim actualRule As Outlook.Rule

    Set outlookStore = Application.Session.DefaultStore
    Set allRules = outlookStore.GetRules

    For Each actualRule In allRules
        If actualRule.RuleType = olRuleReceive And actualRule.Enabled Then
            actualRule.Execute ShowProgress:=True
        End If
    Next

    Set outlookStore = Nothing
    Set allRules = Nothing
    Set actualRule = Nothing
End Sub

Um dann das Makro auch bequem aufrufen zu können, muss in eine freie Fläche einer Symbolleiste mit der rechten Maustaste geklickt und dann Anpassen gewählt werden. Dort ist dann in Kategorien der Wert Makros und bei Befehlen Standard.RunAlles auszuwählen. Dieses kann danach mit der linken Maustaste in irgendeine Symbolleiste gezogen werden.

Outlook 2007 Alle Regeln Per VBA Makros Symbol Verknuepfen 61f23645-55a3-4db2-a643-5c52d3981696 in Outlook 2007 – Definierte Regeln per Makro aufrufen

Es braucht nur noch ein Klick mit der rechten Maustaste auf das Symbol Standard.RunAllRules und schon kann über Schaltflächensymbol ändern ein sinnvolleres Symbol ausgewählt werden. Ein erneuter Klick mit der rechten Maustaste darauf und anschließender Auswahl Standard führt dazu, das dann auch nur das gewählte Symbol angezeigt wird und nicht noch Text. Dann benötigt es nur noch den Klick auf Schließen und schon steht das Makro komfortabel zur Verfügung, das alle definierten Regeln ausführt.

Outlook 2007 Alle Regeln Per VBA Symbol 84fee75c-e84c-434c-b481-dd2ccfa41f35 in Outlook 2007 – Definierte Regeln per Makro aufrufen

Wem die angezeigte Verlaufsbar nicht gefällt, ändert

  • actualRule.Execute ShowProgress:=True

einfach in

  • actualRule.Execute

und schon wird nichts mehr angezeigt.

Der obige Anwendungscode führt die definierten Regeln immer gegen den Ordner Posteingang aus. Die Methode Execute einer Regel erlaubt aber Parameter. Sie lautet

  • rule.Execute(ShowProgress, Folder, IncludeSubfolders,

                 RuleExecuteOption)

Für Regel auf den aktuell gewählten Ordner muss dann nur noch der Aufruf dieser Methode im obigen Anwendungcode anpasst und der aktuelle Ordner als Parameter mit übergeben werden. Siehe dazu auch hier.

¹ Ja, so was wird auf einer Party gefragt… Icon Wink in Outlook 2007 – Definierte Regeln per Makro aufrufen

 Quelle Outlook 2007 – Definierte Regeln per Makro aufrufen

4 Antworten auf Outlook 2007 – Definierte Regeln per Makro aufrufen

  • Hallo …
    habe gerade das macro getestet, aber bei mir geht es nicht :-(
    es gibt ne fehlermeldung Laufzeitfehler -2147352567 (Dieser Speicher bietet keine Unterstüzung für Regeln. und wenn ich aud Debuggen klicke ist die Zeile :
    Set allRules = outlookStore.GetRules
    gelb markiert!

    gibt es da ne einfache Lösung ??
    das würde mich sehr glücklich machen
    Gruß
    Mike Reinberger

  • Kai Schneider sagt:

    Hallo Mike,

    hast du schon regeln definiert? Sind bei Dir Makros erlaubt? Habe den Code gerade noch mal getestet, funktioniert sowohl in Outlook 2007 als auch 2010.

    LG Kai Schneider

  • daniel sagt:

    Hallo, die Anleitung funktioniert bestens. Ist es mit Anpassungen im Code möglich, nur EINE BESTIMMTE Regel ausführen zu lassen und nicht alle aufgeführten …

    Danke, Daniel.

  • Bob sagt:

    das Ganze ist ja für die 2007er Version geschrieben. kann mir einer schreiben, wie das für outlook 2003 zu programmieren ist? falls das überhaupt geht.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>