E-Mails mit VBA filtern

Outlook VBA

Um E-Mails in Outlook mit VBA zu filtern, können Sie das Items.Restrict-Methode des Items-Objekts verwenden. Dies ermöglicht es Ihnen, eine bestimmte Auswahl von E-Mails basierend auf bestimmten Kriterien zu treffen. Hier zeige ich Ihnen, wie Sie eine einfache Filterung durchführen, um E-Mails zu finden, die an einem bestimmten Tag empfangen wurden. Sie können dieses Beispiel anpassen, um verschiedene andere Kriterien zu filtern, wie z.B. E-Mails von einem bestimmten Absender, mit einem bestimmten Betreff usw.


Schritt-für-Schritt-Anleitung

  • Öffnen Sie Outlook und drücken Sie Alt + F11, um den VBA-Editor zu öffnen.
  • Fügen Sie ein neues Modul hinzu, indem Sie mit der rechten Maustaste auf “Module” klicken, “Neues Modul” auswählen und dann den folgenden Code einfügen.

Sub FilterEmailsByDate()
Dim outlookApp As Outlook.Application
Dim ns As Outlook.Namespace
Dim inboxFolder As Outlook.Folder
Dim filteredItems As Outlook.Items
Dim mailItem As Object
Dim filter As String
Dim receivedDate As Date

' Outlook-Instanz initialisieren
Set outlookApp = New Outlook.Application
Set ns = outlookApp.GetNamespace("MAPI")

' Auf den Posteingang zugreifen
Set inboxFolder = ns.GetDefaultFolder(olFolderInbox)

' Datum festlegen, für das E-Mails gefiltert werden sollen
receivedDate = DateSerial(2023, 1, 1) ' Ändern Sie das Jahr, den Monat und den Tag entsprechend

' Filter erstellen (E-Mails, die an diesem Tag empfangen wurden)
filter = "[ReceivedTime] >= '" & Format(receivedDate, "ddddd h:nn AMPM") & _
"' AND [ReceivedTime] <= '" & Format(receivedDate + 1, "ddddd h:nn AMPM") & "'"

' E-Mails mit dem erstellten Filter filtern
Set filteredItems = inboxFolder.Items.Restrict(filter)

' Gefilterte E-Mails durchgehen
For Each mailItem In filteredItems
If TypeName(mailItem) = "MailItem" Then
Debug.Print "Betreff: " & mailItem.Subject
Debug.Print "Empfangen: " & mailItem.ReceivedTime
Debug.Print "Von: " & mailItem.SenderEmailAddress
Debug.Print String(60, "-") ' Trennlinie
End If
Next mailItem
End Sub

Um den VBA-Code weiter anzupassen und verschiedene Filterkriterien zu verwenden, können Sie die filter-Zeichenfolge in dem oben genannten Beispiel modifizieren. Hier sind einige Beispiele, wie Sie den Filter anpassen können, um nach anderen Kriterien wie Absender, Betreff und bestimmten Wörtern im E-Mail-Text zu filtern.

Filtern nach Absender

Wenn Sie E-Mails von einem bestimmten Absender filtern möchten, können Sie den SenderEmailAddress-Eigenschaft im Filter verwenden.

filter = "[SenderEmailAddress] = 'absender@example.com'"

Filtern nach Betreff

Um E-Mails zu filtern, die einen bestimmten Betreff haben, können Sie die Subject-Eigenschaft verwenden.

filter = "[Subject] = 'Wichtige Nachricht'"

Filtern nach Betreff mit Wildcards

Sie können auch Wildcards verwenden, um nach E-Mails zu filtern, deren Betreff bestimmte Wörter enthält.

filter = "[Subject] Like '*Wichtig*'"

Filtern nach E-Mail-Text

Das Filtern nach Text im Körper der E-Mail ist etwas komplexer, da die Restrict-Methode diese Funktionalität direkt nicht unterstützt. Stattdessen müssten Sie zuerst eine grobe Filterung durchführen und dann jede E-Mail durchgehen, um den Text des E-Mail-Körpers zu überprüfen.

' Grobe Filterung (z.B. nach Datum)
filter = "[ReceivedTime] >= '" & Format(receivedDate, "ddddd h:nn AMPM") & "'"

' Gefilterte E-Mails durchgehen und den Körpertext überprüfen
For Each mailItem In inboxFolder.Items.Restrict(filter)
If TypeName(mailItem) = "MailItem" Then
If InStr(1, mailItem.Body, "gesuchter Text", vbTextCompare) > 0 Then
' E-Mail entspricht dem gesuchten Textkriterium
Debug.Print "Betreff: " & mailItem.Subject
' Führen Sie hier weitere Aktionen aus...
End If
End If
Next mailItem

Kombinieren von Filtern

Sie können auch mehrere Bedingungen kombinieren, um eine engere Filterung zu erreichen. Verwenden Sie dazu AND oder OR in Ihrer filter-Zeichenfolge.

filter = "[ReceivedTime] >= '" & Format(receivedDate, "ddddd h:nn AMPM") & "' AND [Subject] Like '*Wichtig*' AND [SenderEmailAddress] = 'absender@example.com'"

Indem Sie diese Filterkriterien anpassen und kombinieren, können Sie die Suche nach E-Mails in Outlook mit VBA stark verfeinern. Experimentieren Sie mit verschiedenen Kriterien, um die gewünschten Ergebnisse zu erzielen.

-

Vorheriger Artikel Nächster Artikel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

CAPTCHA eingeben * Das Zeitlimit ist erschöpft. Bitte CAPTCHA neu laden.