Löschen Sie doppelte Nachrichten in Outlook per VBA Skript.

Outlook VBA

Es kann vorkommen das Sie durch Synchronisationsfehler, z.B. mit der Cloud doppelte Nachrichten in Ihrem Postfach vorfinden. Um diese Nachrichten zu löschen haben wir Ihnen ein kleines VBA Skript erstellt, welches doppelte Nachrichten löscht.

In diesem Skript wird die Größe und der Inhalt der Nachricht zusammen mit dem Betreff in die Dictionary-Struktur hinzugefügt. Wenn eine Nachricht mit demselben Betreff, derselben Größe und demselben Inhalt bereits vorhanden ist, wird sie gelöscht.

Bitte beachten Sie, dass dies nur ein Beispiel ist und eventuell an Ihre spezifischen Anforderungen angepasst werden muss.

Sub DeleteDuplicateEmails()
Dim myOlApp As Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.MAPIFolder
Dim myItems As Outlook.Items
Dim myItem As Object
Dim myItemsDict As Object

Set myOlApp = Outlook.Application
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myItems = myInbox.Items Set myItemsDict = CreateObject("Scripting.Dictionary")

For Each myItem In myItems
If Not myItemsDict.Exists(myItem.Subject & myItem.Size & myItem.Body) Then
myItemsDict.Add myItem.Subject & myItem.Size & myItem.Body, myItem
Else
myItem.Delete
End If
Next myItem
End Sub

 

Eine weitere Alternative zum Entfernen doppelter Nachrichten ist der Duplicate Email Remover. Mit dieser Outlook-Erweiterung haben Sie noch mehr Filtermöglichkeiten.

-

Vorheriger Artikel Nächster Artikel

2 Kommentare zu “Löschen Sie doppelte Nachrichten in Outlook per VBA Skript.

  1. little-key

    Leider funktionier das Skript nicht.
    Unter “Mailhilfe” wären einige Kommentare und hervorgehobene Anpassungszeilen hilfreich.
    So ist eine Fehlerbeseitigung für Nicht-Profis ausgeschlossen.
    Schade, war Interessant zum probieren…

    Antwort
    1. Mailhilfe Artikelautor

      Gibt es eine Fehlermeldung?
      Hier das Skript nochmal genauer erklärt:

      Sub DeleteDuplicateEmails()
      ' Initialisierung der benötigten Outlook-Objekte
      Dim myOlApp As Outlook.Application
      Dim myNameSpace As Outlook.NameSpace
      Dim myInbox As Outlook.MAPIFolder
      Dim myItems As Outlook.Items
      Dim myItem As Object
      Dim myItemsDict As Object

      ' Erstellen einer neuen Outlook-Application-Instanz
      Set myOlApp = Outlook.Application
      ' Zugriff auf das MAPI-Namespace-Objekt
      Set myNameSpace = myOlApp.GetNamespace("MAPI")
      ' Zugriff auf den Standard-Posteingangsordner
      Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
      ' Sammeln aller Elemente im Posteingang
      Set myItems = myInbox.Items
      ' Erstellen eines neuen Dictionary-Objekts
      Set myItemsDict = CreateObject("Scripting.Dictionary")

      ' Durchlaufen aller Elemente im Posteingang
      For Each myItem In myItems
      ' Überprüfen, ob das Element eine E-Mail ist
      If myItem.Class = olMail Then
      ' Zusammenstellen des einzigartigen Schlüssels für jedes E-Mail-Element
      Dim uniqueKey As String
      uniqueKey = myItem.Subject & myItem.Size & myItem.Body
      ' Überprüfen, ob der Schlüssel bereits im Dictionary existiert
      If Not myItemsDict.Exists(uniqueKey) Then
      ' Hinzufügen des Schlüssels zum Dictionary, wenn nicht vorhanden
      myItemsDict.Add uniqueKey, myItem
      Else
      ' Löschen der E-Mail, wenn ein Duplikat gefunden wird
      myItem.Delete
      End If
      End If
      Next myItem
      End Sub

      Wichtige Anpassungen und Kommentare
      Überprüfung auf E-Mail-Typ: Die Zeile If myItem.Class = olMail Then wurde hinzugefügt, um sicherzustellen, dass nur E-Mail-Objekte verarbeitet werden. Andere Arten von Outlook-Elementen (wie Kalendereinträge oder Kontakte) werden ignoriert.

      Eindeutiger Schlüssel: Der eindeutige Schlüssel uniqueKey = myItem.Subject & myItem.Size & myItem.Body kombiniert Betreff, Größe und Inhalt der E-Mail. Sie können diesen Schlüssel anpassen, um andere oder zusätzliche Attribute einzubeziehen.

      Dictionary-Objekt: Das Dictionary-Objekt myItemsDict wird verwendet, um bereits verarbeitete E-Mails zu speichern. Es verhindert, dass E-Mails mehrfach gelöscht werden, wenn sie einmal als Duplikat identifiziert wurden.

      Leistungsoptimierungen: Bei großen E-Mail-Mengen kann dieses Skript langsam laufen. Überlegen Sie, ob Sie Filter anwenden oder das Skript auf einen spezifischen Zeitraum beschränken, um die Leistung zu verbessern.

      Fehlerbehebung
      Zugriffsrechte: Stellen Sie sicher, dass Sie die erforderlichen Zugriffsrechte haben, um Skripte in Outlook auszuführen. Einige Organisationen beschränken dies aus Sicherheitsgründen.

      Referenzen: Überprüfen Sie im VBA-Editor unter “Extras” > “Referenzen”, ob die erforderlichen Bibliotheken ausgewählt sind. Für dieses Skript ist die Outlook-Objektbibliothek erforderlich.

      Sicherung Ihrer Daten: Es ist immer eine gute Idee, vor der Ausführung von Skripten, die Daten löschen können, eine Sicherung Ihrer Outlook-Daten anzulegen.

      Wir hoffen, diese Anpassungen und Kommentare machen das Skript zugänglicher und erleichtern die Fehlerbehebung. Wenn Sie weitere spezifische Fragen haben oder zusätzliche Hilfe benötigen, lassen Sie es uns wissen.

      Antwort

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.