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.
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…
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.