Wie filtere ich Outlook-E-Mails mithilfe einer Regel mit einem VBA-Skript?

14

Bestimmte Dinge sind mit den Standard-E-Mail-Regeln wie der Suche nach Betreffs oder Nachrichtentexten mit Platzhaltern nicht möglich. Sie können mehrere Wörter verwenden, aber es ist nicht dasselbe, wenn Sie Wörter benötigen, die ein Zeichen voneinander entfernt sind. Wie kann ich meinen eigenen Visual Basic für Applikationen-Code schreiben, um Outlook-E-Mails zu filtern?

Grant Bowman
quelle

Antworten:

12

Ich habe nach all diesen Teilen gesucht, die erforderlich sind, damit dieser einfache Filter funktioniert. Unix-Procmail-Filter sind im Vergleich so einfach zu bedienen. Alle Microsoft Outlook-Assistenten stehen einem einfachen Filter mit Platzhaltern im Weg. Obwohl viele E-Mail-Filterbedingungen, die Microsoft standardmäßig bereitstellt, nützlich sind, kann nichts die Flexibilität und Anpassung des ausgeführten Codes übertreffen.

  1. Schreiben Sie Ihren Code.

Alt-F11 ruft den VBA-Code-Editor auf. Doppelklicken Sie auf ThisOutlookSession. Schreiben Sie Ihren Code. In meinem Fall wird ein regulärer Ausdruck in der Betreffzeile verwendet und nicht in den Standardordner, sondern in meine eigene pst in einem Unterordner verschoben.

Sub filter(Item As Outlook.MailItem)
    Dim ns As Outlook.NameSpace
    Dim MailDest As Outlook.Folder
    Set ns = Application.GetNamespace("MAPI")
    Set Reg1 = CreateObject("VBScript.RegExp")
    Reg1.Global = True
    Reg1.Pattern = "(.*Abc.20.*)"
    If Reg1.Test(Item.Subject) Then
        Set MailDest = ns.Folders("Personal Folders").Folders("one").Folders("a")
        Item.Move MailDest
    End If
End Sub
  1. Führen Sie den Code für jede eingehende E-Mail mit einer Regel aus.

Wählen Sie unter Regeln "Regeln und Warnungen verwalten ..." aus. Die neue Regel wird so aussehen

Apply this rule after the message arrives run Project1.ThisOutlookSession.filter

Um dies zu erhalten, klicken Sie für Schritt 1: Bedingung (en) auswählen: einfach auf Weiter. Bestätigen Sie, dass es für alle Nachrichten gilt, indem Sie auf OK klicken. Aktivieren Sie unter "Aktion (en) auswählen" die Option "Skript ausführen", klicken Sie auf das Filterskript, und wählen Sie "Weiter" oder "Fertig stellen". Klicken Sie unter Ausnahmen auswählen auf Weiter oder Fertig stellen. Geben Sie ihm einen guten Namen wie vba-filter und aktivieren Sie diese Regel. Klicken Sie auf Fertig stellen. Da es in einen lokalen Ordner kopiert wird, klicken Sie auf OK, wenn Sie gefragt werden, ob diese Regel nicht für E-Mails gilt, die Sie online oder von einem anderen Gerät aus überprüfen. Klicken Sie im Dialogfeld Regeln und Warnungen auf OK.

  1. Outlook gefällt es nicht, wenn Makros nicht signiert sind. Um Ihre Makros selbst zu signieren, erstellen Sie ein Zertifikat und verwenden Sie es .
Grant Bowman
quelle
Ich habe viel über andere Teillösungen wie Makros und das Erstellen benutzerdefinierter Spalten gelesen. Dies ermöglicht das Sortieren der Benutzeroberfläche oder das Filtern von Ansichten, wobei jedoch alle eingehenden Nachrichten bearbeitet werden, was ich nicht tun wollte.
Grant Bowman
1
Mein Outlook-Client hat die Regel zum Ausführen von vbscript vba-filter beim Starten von Outlook inkonsistent deaktiviert. Dies verursachte Probleme. Es gibt auch eine Zeichenbeschränkung für das vbscript, die jeder Regel hinzugefügt werden kann. Damit sie konsistent arbeiten, obwohl mit weniger Flexibilität, habe ich die Filter mit den Standard-Outlook-Filtern neu geschrieben, damit sie die ganze Zeit funktionieren.
Grant Bowman
2
Diese Option zum Ausführen eines Skripts fehlte. Einen verwandten Link finden Sie hier: slipstick.com/outlook/rules/outlook-2016-run-a-script-rules
Jayan
Der obige Code funktioniert bei mir nicht. Ich habe Abc.20 in die Betreff-Datei eingefügt, aber die Nachrichten werden nie aus dem Posteingang verschoben.
Tensigh
1
Mit dem Debug-Fenster gelang es mir, den regulären Ausdruck zum Laufen zu bringen. Jetzt geht es nur noch darum, in die richtigen Ordner zu wechseln. Ich denke, ich kann es herausfinden. Danke für Ihre Hilfe.
Tensigh