Nerd-Tipp 14.08.2023, 05:00 Uhr

Der beste Outlook-Tipp inkl. Makro für PR-Mail-geplagte Journis

Täglich hereinschneiende PR-Mails gehören zum Journi-Alltag. Wie wäre es, wenn Sie alle künftigen Mails eines neuen PR-Mail-Versenders mit einem Klick automatisch in Ihren PR-Ordner verschieben könnten?
Alltag bei Journis: haufenweise Medienmitteilungen im Postfach
(Quelle: PCtipp.ch)
Wenn PR-Unternehmen die Mailadresse eines Journalisten oder einer Journalistin in die Finger bekommen, gibts kein Halten mehr. Jede kleine Neuigkeit, die einer der PR-Kunden zu verkünden hat, landet in Form einer Pressemitteilung in den Journi-Postfächern in aller Welt.
Wohlbemerkt: Daran ist grundsätzlich nichts auszusetzen. Und manche PR-Unternehmen machen einen guten Job, indem sie etwa IT-Journis weitgehend von themenfremden Meldungen verschonen. Ausserdem sind wir oft froh über interessante Meldungen, von denen wir die eine oder andere auch zu einer Newsmeldung verarbeiten oder für Gerätetests berücksichtigen.
Aber das erste Problem: Dieses besteht in der unglaublichen Menge von Meldungen, die täglich von den verschiedensten Agenturen eintreffen. Zumindest ich will diese Mailflut nicht in meinem Posteingang haben, sondern in einem separaten Ordner, in dem ich sie in einem ruhigen Moment sichten oder bei Bedarf durchsuchen kann.
Auf den ersten Blick wäre die Lösung in Outlook einfach: Rechtsklick auf die Mail, Regeln/Nachrichten von XY immer verschieben, Ordner namens «PR» wählen, fertig.
Bloss: Tun Sie das mal ein paar Monate oder Jahre lang, wird Outlook zwangsläufig an seine Grenzen stossen, weil der maximale Speicher für Regeln erreicht ist.
Die etwas bessere Lösung habe ich in diesem Artikel behandelt, denn damit erstellt man die Regel nicht für jeden einzelnen Angestellten einer PR-Firma, sondern filtert die Mails anhand der Domain in deren Absenderadresse. Damit schrumpft die Anzahl Regeln massiv, wodurch man Platz im Regelspeicher gewinnt (sofern man die überzähligen Regeln dann auch löscht).
Das zweite Problem: Outlook ist unfassbar umständlich zu bedienen, wenn man die Regel nicht für den exakten Absender, sondern für die Domain erstellen will. Das sind weit über ein Dutzend Klicks sowie Tastatureingaben – für jede einzelne Domain!
Das muss doch schneller gehen! Am besten wärs doch so: Wenn eine Mail einer neuen PR-Agentur eintrifft, möchte man einen Knopf drücken, worauf diese und alle künftigen Mails dieser Agentur automatisch im PR-Ordner landen.
Hierfür bietet sich in Outlook ein Makro an, welches Folgendes tut: Die Domain aus der Absenderadresse der markierten Mail auslesen. Dann diese Domain inkl. @-Zeichen in der bestehenden Filterregel «PR01» im Feld «Mit bestimmten Wörtern in der Absenderadresse» hinzufügen, welche diese Mails in den Ordner namens PR verschiebt. Zum Schluss diese Regel ausführen oder die Mail einfach so gleich in den PR-Ordner verschieben.
In der Not habe ich mich für den Makro-Code spasseshalber zunächst an ChatGPT gewandt, das aber erwartungsgemäss einen unbrauchbaren Murks mit Funktionen produzierte, die es so in Outlook gar nicht gibt.

Das geniale Makro – Vorbereitung

Der Forumsnutzer «nochEinAndreas» hat auf meinen Post hin ein Makro geschrieben, das exakt das Gewünschte tut, zumindest in Outlook unter Windows. Vielleicht hilft es auch anderen Journis oder weiteren Personen, die ein Makro für denselben Zweck brauchen könnten.
Wichtig: Gehen Sie genau so vor, wie nachfolgend beschrieben, sonst klappt es nicht. Die Vorbereitung inkl. Implementierung des Makros ist etwas umständlich. Dafür sparen Sie später jeden Tag viel Zeit. Ich möchte das Makro nicht mehr missen!
Voraussetzungen: Erstellen Sie in der linken Spalte mit Rechtsklick auf Ihren Posteingang-Ordner einen Neuen Ordner, den Sie PR nennen. Vielleicht haben Sie den ja bereits.
Hinweis: Sie können auch einen anderen Ordnernamen verwenden, müssten diesen aber später im Makrocode anpassen.
Erstellen Sie anhand einer der zu verschiebenden Mails jetzt von Hand eine Regel nach folgendem Muster: Klicken Sie in der Mailvorschau einer solchen Mail zuerst auf den Absendernamen. Damit erfahren Sie die Domain, in unserem Beispiel ist es afp.com.
Nach dem Klick auf den Absendernamen in der Vorschau erscheint die Domain, hier afp.com.
Quelle: PCtipp.ch
Klicken Sie in der Mailübersicht mit rechts auf die Mail, wählen Sie Regeln/Regel erstellen.
Erstellen Sie eine Regel ...
Quelle: PCtipp.ch
Gehen Sie unten rechts direkt zu Erweiterte Optionen.
Das Regel-Fenster mit der Schaltfläche Erweiterte Optionen
… rufen Sie aber gleich die erweiterten Optionen auf
Quelle: PCtipp.ch
Haken Sie im oberen Teil die Option «mit bestimmten Wörtern in der Absenderadresse an». Klicken Sie im unteren Teil auf den verlinkten Begriff «bestimmten Wörtern». Tragen Sie die Domain inklusive dem @-Zeichen ein, in unserem Beispiel @afp.com und klicken Sie auf Hinzufügen, gefolgt von OK.
Tragen Sie die Domain ein, aufgrund derer gefiltert werden soll
Quelle: PCtipp.ch
Nach dem Klick auf Weiter aktivieren Sie im oberen Teil die Option «diese in den Ordner Zielordner verschieben». Im unteren Teil klicken Sie auf den verlinkten Begriff Zielordner. Wählen Sie den gewünschten Ordner aus, der bei mir und später im Makro PR heisst.
Die Auswahl des Ordners, in den verschoben werden soll
Quelle: PCtipp.ch
Klicken Sie zweimal auf Weiter, müssen Sie einen Namen für die Regel eingeben. Anstelle der vorgeschlagenen Domain nennen Sie die Regel PR01 (0 ist die Ziffer 0).
Hinweis: Sie können einen anderen Regelnamen verwenden, müssten diesen aber später im Makrocode anpassen. Sie können auch gleich dies anhaken, wenn Sie wollen: «Diese Regel jetzt auf Nachrichten anwenden, die sich bereits im Ordner Posteingang befinden».
Die Regel-Details
Wählen Sie den Regelnamen PR01 oder passen Sie den Namen der Regel später im Makro an
Quelle: PCtipp.ch
Klicken Sie auf Fertig stellen, wird die Regel PR01 erstellt, die bereits einen Eintrag nach dem Schema hat, das wir brauchen.

Das geniale Makro – in Outlook hinzufügen

Wenn die Vorbereitungen auf der vorherigen Seite getroffen sind, haben Sie also jetzt eine Regel namens PR01, die Mails von einer bestimmten Absender-Domain automatisch in den Ordner namens PR verschiebt. Richtig?
Jetzt drücken Sie Alt+F11 und gehen Sie zu Einfügen/Modul. Klicken Sie doppelt aufs links erscheinende Modul1. Fügen Sie den kompletten untenstehenden Makrocode ein.
Wichtig: Falls Ihre Regel nicht PR01 heisst oder der Ordner, in den Sie die Mails verschoben haben wollen, nicht PR heisst, ändern Sie die Bezeichnungen in den zwei Zeilen, die ich auf dem nachfolgenden Screenshot markiert habe.
Sollten Regel und Ordner bei Ihnen anders als bei mir heissen, müssen Sie diese zwei Zeilen im Makrocode noch anpassen.
Quelle: PCtipp.ch
Klicken Sie auf Speichern, gefolgt von Datei/Schliessen und zurück zu Outlook. Erstellen Sie rasch ein Zertifikat, wie in «Outlook: So signieren Sie Ihre Makros» beschrieben.
Öffnen Sie wieder mit Alt+F11 den VBA-Editor und klicken Sie aufs Modul1. Via Extras/Digitale Signatur wählen Sie das vorhin erstellte Zertifikat aus, klicken Sie auf OK und erneut auf OK.
Jetzt gehts erneut zu Datei/Schliessen und zurück zu Outlook. Beenden Sie Outlook via Datei-Menü und klicken Sie bei der Frage, ob das Projekt gespeichert werden soll, auf Ja.
Einstellung prüfen: Starten Sie Outlook wieder und öffnen Sie Datei/Optionen/Trust Center. Bei Einstellungen für das Trust Center gehts zu den Makroeinstellungen. Stellen Sie sicher, dass diese Option aktiviert ist: «Benachrichtigungen für digital signierte Makros. Alle anderen Makros sind deaktiviert».
Diese Einstellung erlaubt das Ausführen signierter Makros
Quelle: PCtipp.ch
Makroverknüpfung platzieren: Am besten blenden Sie die Leiste für den Schnellzugriff ein und platzieren Sie diese oben links. Wie das geht, steht hier: «Outlook, Word, Excel: Wohin ist die Schnellzugriffsleiste verschwunden?».
Ist die Schnellzugriffsleiste platziert, klappen Sie an deren rechtem Rand das Winkelsymbol auf und gehen Sie zu Weitere Befehle. Schalten Sie oben bei «Befehle auswählen» auf Makros um. Klicken Sie aufs Makro «Projekt1.verschieben» und befördern Sie es mittels Hinzufügen in die rechte Spalte.
Sieht noch nicht hübsch aus, aber das ändern wir gleich
Quelle: PCtipp.ch
Sie möchten vermutlich nicht auf «Projekt1.verschieben» klicken müssen, sondern auf etwas wie «PR-Filter». Klicken Sie in der rechten Spalte auf Projekt1.verschieben und benutzen Sie unten Ändern. Überschreiben Sie den Namen mit der gewünschten Bezeichnung. Wenn Sie mögen, wählen Sie auch gleich ein anderes, gut erkennbares Icon dafür aus. Klicken Sie in beiden Fenstern auf OK. Fertig!
Benennen Sie die Verknüpfung für Ihre Schnellzugriffsleiste um und wählen Sie allenfalls ein passendes Symbol
Quelle: PCtipp.ch
Makro ausführen: Wenn nun eine Mail einer neuen PR-Agentur eintrifft, klicken Sie die Mail an. Anschliessend tuts ein Klick auf Ihr PR-Filter-Icon. Die Domain wird zu Ihrer PR01-Regel hinzugefügt, worauf Outlook diese Mail und alle künftigen Mails, die dieselbe Domain tragen, in den PR-Ordner verschiebt. (PCtipp-Forum)
Option Explicit
Option Base 1

' Dieser Makro erweitert eine Regel zum Verschieben von Mails.
' Der Domänen-Name von markierten Mails wird in die
' Regel-Liste zum Verschieben aufgenommen.
' Die erweiterte Regel wird 1x per Makro ausgeführt

' Es gibt zwei Bedingungen:
' - Der Name des Ordners, in den verschoben werden soll,
'   darf in der Ordnerstruktur nur 1x vorhanden sein.
' - Die Regel, die in der Konstanten 'regelName' genannt ist,
'   muss mindestens 1 Bedingung enthalten,
'   dass Mails mit bestimmtem Text in der Absender-Adresse
'   in den angegebenen Ordner verschoben werden sollen.

Sub verschieben()
    ' Diese zwei Konstanten nach Wunsch anpassen:
    Const nachOrdner As String = "PR"   ' Der Ordner, in den die Mails verschoben werden
    Const regelName As String = "PR01"  ' Der Name der Regel, die erweitert wird.
    
    Dim zielOrdner As Outlook.Folder    ' Der Zielordner als Objekt
    Dim regeln As Outlook.Rules         ' Alle Regeln als Objekt
    Dim absender As Variant             ' Die Liste der Absender in der Regel
    Dim explorer As Outlook.explorer    ' Der Outlook-Explorer als Objekt
    Dim email As Object                 ' Die ausgewählte(n) E-Mail(s) als Objekt
    Dim domäne As String                ' Domäne einer Mail-Adresse
    Dim domänenListe As String          ' Liste aller Domänen in der Regel-Liste als ein String
    Dim i As Integer                    ' Schleifen-Laufvariable
    Dim ordner As Outlook.Folder        ' Ein Outlook-Ordner als Objekt
    
    Set explorer = Application.ActiveExplorer       ' Den Outlook-Explorer holen
    Set ordner = explorer.CurrentFolder             ' Den aktiven Outlook-Ordner holen
    If explorer.Selection.Count < 1 Then Exit Sub   ' Wenn keine Mail ausgewählt ist, den Makro beenden
 
    Set zielOrdner = ziel(nachOrdner)       ' Den Ziel-Ordner als Objekt über die Funktion 'ziel' finden
    If zielOrdner Is Nothing Then                               ' Wenn es den Ziel-Ordner nicht gibt...
        MsgBox "Zielordner nicht gefunden", , "Tut mir Leid"    ' ...Meldung ausgeben...
        Exit Sub                                                ' ...und Makro beenden
    End If
    
    Set regeln = Application.Session.DefaultStore.GetRules()    ' Die Regeln als Objekt holen
    With regeln(regelName)                                      ' Aus den Regeln die ausgewählte Regel als Objekt holen
        With .Conditions.SenderAddress                          ' Aus der ausgewählten Regel die Bedingung für Absender-Adressen als Objekt holen
            absender = .Address                                 ' Die Adressenliste in ein Variablenfeld holen
            domänenListe = ""                                   ' Die Domänenliste als leer initialisieren
            For i = 0 To UBound(absender)                       ' Alle Domänen in der Liste durchgehen
                domänenListe = domänenListe & absender(i) & "," ' Die Domänen zu einem einzigen Text zusammenbauen
            Next i
            
            For Each email In explorer.Selection                ' Alle ausgewählten Mails durchgehen
                With email
                    domäne = Mid(.SenderEmailAddress, InStr(.SenderEmailAddress, "@"))  ' Die Domäne der Mail extrahieren
                    If InStr(domänenListe, domäne & ",") = 0 Then                       ' Wenn die Domäne noch nicht in der Liste ist...
                        ReDim Preserve absender(0 To UBound(absender) + 1)              ' ...das Datenfeld der Domänen erweitern...
                        absender(UBound(absender)) = domäne                             ' ...und die neue Domäne hinzufügen.
                        domänenListe = domänenListe & domäne & ","                      ' Die neue Domäne in die Domänenliste mit aufnehmen
                    End If
                End With
            Next email
            
            .Address = absender         ' Das erweiterte Datenfeld mit den Domänen in die Adressenliste der Regel schreiben
        End With
        regeln.Save                     ' Alle Regeln sichern
        ' Die Regel einmalig ausführen.
        ' 1. False:                                     Keine Fortschrittsanzeige
        ' ordner:                                       Die Regel im aktuellen Ordner ausführen
        ' 2. False:                                     Unterordner nicht mit berücksichtigen
        ' OlRuleExecuteOption.olRuleExecuteAllMessages  Regel für alle Mails im Ordner anwenden, egal ob gelesen oder ungelesen
        .Execute False, ordner, False, OlRuleExecuteOption.olRuleExecuteAllMessages
    End With
End Sub

' Die Funktion ermittelt den Hauptordner des eigenen Mail-Accounts.
' Diesen Hauptordner und den Namen des gesuchten Ziel-Ordners
' übergibt sie an die Funktion 'finde'
' Deren Ergebnis wird zurückgegeben
Function ziel(ordner As String) As Outlook.Folder
    Dim start As Outlook.Folder
    
    Set start = Application.Session.DefaultStore.GetRootFolder   ' Der Hauptordner des eigenen Mail-Accounts als Objekt
    Set ziel = finde(start, ordner)     ' Aufruf der Funktion 'ziel' mit Übergabe des Hauptordnders und des Zielordners
End Function

' Die Funktion sucht den Zielordner in der Struktur des Hauptordners
' und gibt diesen als Objekt zurück
' Wird er nicht gefunden, kommt 'Nothing' zurück
Function finde(of As Outlook.Folder, ordner As String) As Outlook.Folder
    Dim osf As Outlook.Folder   ' Outlook Unterordner als Objekt
    
    Set finde = Nothing             ' Das Ergebnis initialisieren
    For Each osf In of.Folders      ' Alle Unterordner des Hauptordners bearbeiten
        If osf.Name = ordner Then   ' Wenn der Zielordner gefunden wurde...
            Set finde = osf         ' ...den Zielordner als Rückgabewert setzen...
            Exit Function           ' ...und die Funktion beenden
        End If
        Set finde = finde(osf, ordner)  ' Sonst die Funktion rekursiv aufrufen, mit dem Unterordner als Startpunkt.
        If Not finde Is Nothing Then                    ' Wenn etwas gefunden wurde...
            If finde.Name = ordner Then Exit Function   '...und der Fund ist der Zielordner, Funktion beenden
        End If
    Next osf
End Function



Kommentare
Es sind keine Kommentare vorhanden.