Email to Torsten Weber
Feed Icon
.NET User Group Leipzig

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 Makro ausführen, Makrosicherheit festlegen

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

Outlook 2007 – Fehlermeldung, wenn Makros deaktiviert sind

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

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 Then
            actualRule.Execute ShowProgress:=True
        End If
    Next
    
    Set outlookStore = Nothing
    Set allRules = Nothing
    Set actualRule = Nothing
End Sub
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 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 Makro ausführen, Verknüpfung Makro und Symbol

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 Makro ausführen, Verknüpfung Makro und Symbol

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... ;)

Saturday, October 27, 2007 9:08:04 PM (W. Europe Standard Time, UTC+01:00)
Hallo Torsten.

Vielen Dank für das Makro! Die Implementierung funktionierte reibungslos - nicht zuletzt auch dank deiner ausführlichen Beschreibung. Genau so hab ich mir das vorgestellt. :)

Viele Grüße, Robert
Robert Spemann
Sunday, March 02, 2008 11:10:37 AM (W. Europe Standard Time, UTC+01:00)
HI,

wieso bekommt man so was einfaches unter 2003 nicht hin ?
Michael
All comments require the approval of the site owner before being displayed.
Name
E-mail
(will show your gravatar icon)
Home page

Comment (Some html is allowed: a@href@title, b, blockquote@cite, em, i, strike, strong, sub, sup, u) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Live Comment Preview

Boldness, risk‐taking and a little bit of craziness – lateral thinker Torsten Weber
Boldness, risk‐taking and a little bit of craziness – lateral thinker Torsten Weber

Torsten Weber is a MVP for Device Application Development

Calendar of the .NET User Group Leipzig

Microsoft Community Leader/Insider Program

Programmieren mit dem .NET Compact Framework. Anwendungsentwicklung für mobile Geräte.

Microsoft – change the mobile world or go home!

Categories

Calendar

<December 2008>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Archive

My subscribed blogs

show all
show less
Blogs of good friends (as OPML)
More Blogs (as OPML)
RSS: .NET Casts .NET Casts
RSS: .NET Compact Framework Team .NET Compact Framework Team
RSS: Alan Cameron Wills Alan Cameron Wills
RSS: Alex Feinman Alex Feinman
RSS: Alex Januschewsky Alex Januschewsky
RSS: Alex Yakhnin Alex Yakhnin
RSS: Alexander Wechsler Alexander Wechsler
RSS: Alexander Zeitler Alexander Zeitler
RSS: Amit Chopra Amit Chopra
RSS: Anand Balachandran Anand Balachandran
RSS: Anthony Wong Anthony Wong
RSS: Ausgefallene Gadgets & Ideen Ausgefallene Gadgets & Ideen
RSS: Barry Bond Barry Bond
RSS: Boas Enkler Boas Enkler
RSS: Calvin Hsia Calvin Hsia
RSS: Chris Eberl Chris Eberl
RSS: Chris Lorton Chris Lorton
RSS: Chris Tacke Chris Tacke
RSS: Christian Weyer Christian Weyer
RSS: Christopher Fairbairn Christopher Fairbairn
RSS: ComputerBase News ComputerBase News
RSS: Cordula Lochmann Cordula Lochmann
RSS: Dan Elliot Dan Elliot
RSS: Daniel Chong Jyh Tar Daniel Chong Jyh Tar
RSS: Daniel Fisher Daniel Fisher
RSS: Daniel Melanchthon Daniel Melanchthon
RSS: Daniel Moth Daniel Moth
RSS: Dave Baker Dave Baker
RSS: David Kline David Kline
RSS: Dirk Primbs Dirk Primbs
RSS: DotNetGerman Bloggers DotNetGerman Bloggers
RSS: e-commerce blog e-commerce blog
RSS: Erich Holzbauer Erich Holzbauer
RSS: Florian Mätschke Florian Mätschke
RSS: Frank Fischer Frank Fischer
RSS: Gareth Jones Gareth Jones
RSS: George Mathew George Mathew
RSS: Gurbir Singh Gurbir Singh
RSS: Guy Burstein Guy Burstein
RSS: Hannes Preishuber Hannes Preishuber
RSS: Hard Tecs 4U News Hard Tecs 4U News
RSS: Heike Scholz Heike Scholz
RSS: heise online News heise online News
RSS: HoppeRx HoppeRx
RSS: IE Mobile Team Weblog IE Mobile Team Weblog
RSS: Inside Bennie Inside Bennie
RSS: Inside Microsoft Inside Microsoft
RSS: Jack Greenfield Jack Greenfield
RSS: James Pratt James Pratt
RSS: Jason Hogg Jason Hogg
RSS: Jason Langridge Jason Langridge
RSS: Jens Häupel Jens Häupel
RSS: Jezz Santos Jezz Santos
RSS: Jim Wilson Jim Wilson
RSS: Johanna Merhof  Johanna Merhof
RSS: José Gallardo Salazar José Gallardo Salazar
RSS: Josh Heitzman Josh Heitzman
RSS: Kai Gloth Kai Gloth
RSS: Kevin Daly Kevin Daly
RSS: Lao K Lao K
RSS: Loke Uei Tan Loke Uei Tan
RSS: Maarten Struys Maarten Struys
RSS: Marcus Perryman Marcus Perryman
RSS: Mark Arteaga Mark Arteaga
RSS: Mark Ihimoyan Mark Ihimoyan
RSS: Mark Prentice Mark Prentice
RSS: Markus Hage Markus Hage
RSS: Markus Zeischke Markus Zeischke
RSS: Martin Fowler Martin Fowler
RSS: Mathias Raacke Mathias Raacke
RSS: Mel Sampat Mel Sampat
RSS: Michael Korp Michael Korp
RSS: Michael Saffitz Michael Saffitz
RSS: Mike Hall Mike Hall
RSS: Mike Temporale Mike Temporale
RSS: Mike Zintel Mike Zintel
RSS: Mobile Developer Center Mobile Developer Center
RSS: Mobile Tagging Mobile Tagging
RSS: MozBackup MozBackup
RSS: MS Mobiles MS Mobiles
RSS: MSDN Forum .NET CF MSDN Forum .NET CF
RSS: MSDN Forum Device Emulator MSDN Forum Device Emulator
RSS: MSDN Forum Smart Devices C#/VB MSDN Forum Smart Devices C#/VB
RSS: MSDN Forum Smart Devices MSDN Forum Smart Devices
RSS: MVP Global Summit 2008 MVP Global Summit 2008
RSS: Nazim Lala Nazim Lala
RSS: Neil Cowburn Neil Cowburn
RSS: Neno Loje Neno Loje
RSS: Nils Müller Nils Müller
RSS: Nino Benvenuti Nino Benvenuti
RSS: Norbert Eder Norbert Eder
RSS: Oliver Block Oliver Block
RSS: Oliver Scheer Oliver Scheer
RSS: OrbLog OrbLog
RSS: Outlook Mobile Team Blog Outlook Mobile Team Blog
RSS: OVIDEO (Kino) OVIDEO (Kino)
RSS: OVIDEO (Trailer) OVIDEO (Trailer)
RSS: Pedro Silva Pedro Silva
RSS: Peter Foot Peter Foot
RSS: Peter Kirchner Peter Kirchner
RSS: Rabi Satter Rabi Satter
RSS: Ralf Westphal Ralf Westphal
RSS: Rob Tiffany Rob Tiffany
RSS: Rod Drury Rod Drury
RSS: Roman Batoukov Roman Batoukov
RSS: Scott Guthrie Scott Guthrie
RSS: Scott Holden Scott Holden
RSS: Sebastian Weber Sebastian Weber
RSS: Simon Hackfort Simon Hackfort
RSS: Smartphone-Web Smartphone-Web
RSS: Sriram Krishnan Sriram Krishnan
RSS: Stephen Fry Stephen Fry
RSS: Steve Cook Steve Cook
RSS: Steve Hegenderfer Steve Hegenderfer
RSS: Steven Kelly Steven Kelly
RSS: Steven Pratschner Steven Pratschner
RSS: Stuart Kent Stuart Kent
RSS: Sue Loh Sue Loh
RSS: Thomas Schissler Thomas Schissler
RSS: Tom Hollander Tom Hollander
RSS: Vik Thairani Vik Thairani
RSS: Visual Studio For Devices Team Visual Studio For Devices Team
RSS: We-Dig.org We-Dig.org
RSS: Windows Mobile Team Blog Windows Mobile Team Blog
RSS: Xin Yan Xin Yan