Per Makro Regeln eine Property zuweisen

Moderator: ModerationP

Per Makro Regeln eine Property zuweisen

Beitragvon Kerstin83 » 27. Okt 2018, 15:40

Liebes Forum :P :P

ich würde gerne ein Makro haben, mit dem ich allen Regeln die Property "keine weiteren Regeln anwenden" mitgeben. Vielleicht am besten nur diejenigen, die Emails in einen Ordner verschieben.
In Access bin ich ja jetzt so ein bisschen eingestiegen, wie so etwas in Outlook gemacht werden kann, weiß ich überhaupt nicht.

Liebe Grüße

Kerstin :P
Ich hasse Leute, die Sätze nicht zuende

Tchibo Induktions-Milchaufschäumer
Standby-Betrieb: 18 Watt.
Pro Jahr: 80 kg CO2 (und 30 Euro)

- Ohne Kommentar -
Kerstin83
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1376
Registriert: 03. Aug 2005, 13:29
Wohnort: Zur Zeit im schönen Berlin

Re: Per Makro Regeln eine Property zuweisen

Beitragvon knobbi38 » 27. Okt 2018, 18:13

Hallo Kerstin,

ich bin jetzt auch nicht so mit dem Outlook Objektmodell vertraut, aber vielleicht als Einstieg per Automation, z.B. aus Access:
Sub ModifyRule()
' Benötigt Verweis auf Microsoft Outlook Object Library
Dim objOL As Outlook.Application
Dim objRules As Outlook.Rules
Dim objRule As Outlook.Rule
Dim objRuleAction As Outlook.RuleAction

On Error Resume Next
Set objOL = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then
Set objOL = CreateObject("Outlook.Application")
End If
On Error GoTo 0

Set objRules = objOL.Session.Stores(1).GetRules()
Set objRule = objRules(1)
Set objRuleAction = objRule.Actions.Stop
objRuleAction.Enabled = True

Set objRuleAction = Nothing
Set objRule = Nothing

objRules.Save
Set objRules = Nothing
Set objOL = Nothing
End Sub

Hier wird im 1.Store für die 1.Regel die RuleAction "Stop" ("keine weiteren Regeln anwenden" ) eingeschaltet. Das muß natürlich an deine Verhältnisse angepaßt werden. Aber vielleicht hilft es beim weitern googlen.

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1210
Registriert: 02. Jul 2015, 14:23

Re: Per Makro Regeln eine Property zuweisen

Beitragvon Kerstin83 » 27. Okt 2018, 21:18

du bist ja hier auch unterwegs :P

Das Makro läuft bei mir leider nicht :(
Es steigt in der Zeile
Set objRules = objOL.Session.Stores(1).GetRules()

aus
Ich hasse Leute, die Sätze nicht zuende

Tchibo Induktions-Milchaufschäumer
Standby-Betrieb: 18 Watt.
Pro Jahr: 80 kg CO2 (und 30 Euro)

- Ohne Kommentar -
Kerstin83
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1376
Registriert: 03. Aug 2005, 13:29
Wohnort: Zur Zeit im schönen Berlin

Re: Per Makro Regeln eine Property zuweisen

Beitragvon knobbi38 » 27. Okt 2018, 23:29

Hallo Kerstin,
ich kenne jetzt nicht deine Outlook-Konfiguration und auch nicht die Outlook-Version.
In den Stores werden eigentlich alle Informationen gespeichert. Siehe mal dieses Bild, dann wird es etwas klarer. https://www.add-in-express.com/creating-addins-blog/2013/05/31/outlook-accounts-stores-folders-items/.

Ersetzte mal die Zeile
Set objRules = objOL.Session.Stores(1).GetRules()
mit
Set objRules = objOL.Session.DefaultStore.GetRules()

Vielleicht geht das ja schon, ansonsten müßte man eventuell anstatt über das Session-Objekt über das Namespace-Objekt die Stores ermitteln.

Hier noch zwei Link mit Scripts, die allerdings direkt in Outlook laufen:
http://www.gregthatcher.com/Scripts/VBA/Outlook/GetListOfRules.aspx
http://www.outlookcode.com/threads.aspx?forumid=2&messageid=28707

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1210
Registriert: 02. Jul 2015, 14:23

Re: Per Makro Regeln eine Property zuweisen

Beitragvon Kerstin83 » 28. Okt 2018, 06:49

Vielen Dank :P
damit hats jetzt geklappt:
Code: Alles auswählen
Sub setzeKeineWeiterenRegelnAnwenden()
   Dim objRules As Outlook.Rules
   Dim objRule As Outlook.Rule
   Dim objRuleAction As Outlook.RuleAction
   
   On Error Resume Next
   Set objRules = Outlook.Application.Session.DefaultStore.GetRules
   For Each objRule In objRules
      ' For Each objRuleAction In objRule.Actions
      Set objRuleAction = objRule.Actions.Stop
      objRuleAction.Enabled = True
      ' Next
   Next
   objRules.Save
End Sub

Was mir nicht ganz klar ist, in der Zeile "Set objRuleAction = objRule.Actions.Stop" setze ich ja mit Set irgendeine Variable des Typs Outlook.RuleAction. Die ist aber gar nicht mit der behandelten Regel irgendwie verknüpft. Ich habe den Eindruck, das wesentliche passiert auf der rechten Seite derZuweisung in objRule.Actions.Stop und die linke Seite wird nur verwendet, weil man die rechte Seite nicht einzeln hinschreiben kann. Ist das so ? Und kann man die rechte Seite vielleicht doch irgendwie ohne eine Dummyvariable schreiben ?

die allerdings direkt in Outlook laufen:

Laufen die nicht alle in Outlook ? Machst du sowas von Access aus ?

Liebe Grüße

Kerstin :P
Ich hasse Leute, die Sätze nicht zuende

Tchibo Induktions-Milchaufschäumer
Standby-Betrieb: 18 Watt.
Pro Jahr: 80 kg CO2 (und 30 Euro)

- Ohne Kommentar -
Kerstin83
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1376
Registriert: 03. Aug 2005, 13:29
Wohnort: Zur Zeit im schönen Berlin

Re: Per Makro Regeln eine Property zuweisen

Beitragvon knobbi38 » 28. Okt 2018, 12:53

Hallo Kerstin,

zum Ausprobieren habe ich das mit Access-VBA per Automation gemacht, dann kann ich das wieder löschen und mein Outlook bleibt erhalten.

Zu deiner Frage: Im Code werden alle Rules durchlaufen und jede Rule enthält seine RuleActions. Mit Hilfe der Rule.Actions Property pickt man sich eine bestimmte RuleAction aus diesem "Pool" heraus und weist sie einer Referenz zu, damit man sie bearbeiten kann. Die etwas eigentümliche Syntax dafür ist Set objRuleAction = objRule.Actions.Stop, wobei die Eigenschaft Stop in diesem Fall die von dir gewünschte Rule zurückgibt. Sieht so ein bissen wie eine Factory Methode aus.
Egal ... wenn es funktioniert.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1210
Registriert: 02. Jul 2015, 14:23


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast