Nerd-Tipp
10.09.2023, 11:44 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?
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.
Und dann fragte ich im PCtipp-Forum.
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.
Klicken Sie in der Mailübersicht mit rechts auf die Mail, wählen Sie Regeln/Regel erstellen.
Gehen Sie unten rechts direkt zu 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.
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.
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».
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.
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».
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.
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!
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