Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Makro (Outlook) zum Löschen aller Emails älter X Tage

VBA Makro (Outlook) zum Löschen aller Emails älter X Tage
12.10.2023 12:17:11
BuddyHoli
Ich bin Outlook VBA Neuling.

Ich würde gerne per Makro alle Emails aus Ordnern löschen, die älter sind als 2 Jahre.
Perfekt wäre, wenn der Ordner-Mehrfachauswahldialog vorher erscheinen könnte.

Ich habe das mal irgendwo gesehen, finde die Quelle aber leider nicht mehr.
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Makro (Outlook) zum Löschen aller Emails älter X Tage
12.10.2023 13:07:02
Yal
Hallo Buddy (wir sprechen uns im Forum per Vorname an ;-)

"VBA gut" aber gleichzeitig "Outlook VBA neuling"... Beim Löschen/vernichten von Daten, würde ich sehr vorsichtig damit umgehen.

Lege einen neuen Suchordner in dem Du alle Mails/Elemente auflistest, die Älter sind als 2 Jahren. So hast Du schon die Übersicht.
Dann geht es weiter mit dem Outlook-Objektmodell: https://learn.microsoft.com/de-de/office/vba/api/overview/outlook/object-model
Dann geht es weiter mit Folder-Objekte und den "For Each objItem in myFolder.Items"

Wenn Du den Ordner-Mehrfachauswahl sehen möchte, geht es wahrscheinlich über den PickerDialog: https://learn.microsoft.com/de-de/office/vba/api/outlook.namespace.pickfolder

VG
Yal
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Makro zum Löschen aller Emails älter als X Tage in Outlook


Schritt-für-Schritt-Anleitung

Um ein Makro in Outlook zu erstellen, welches alle Emails löscht, die älter sind als ein bestimmter Zeitraum, befolge diese Schritte:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Outlook.
  2. Erstelle ein neues Modul:

    • Rechtsklicke im Projekt-Explorer auf "Microsoft Outlook Objects" und wähle "Einfügen" > "Modul".
  3. Füge den folgenden Code ein:

    Sub DeleteOldEmails()
       Dim objNamespace As Outlook.Namespace
       Dim objFolder As Outlook.Folder
       Dim objItem As Object
       Dim i As Long
       Dim daysOld As Integer
    
       daysOld = InputBox("Gib die Anzahl der Tage ein, nach denen die Emails gelöscht werden sollen:", "Emails löschen")
    
       Set objNamespace = Application.GetNamespace("MAPI")
       Set objFolder = objNamespace.PickFolder
    
       If Not objFolder Is Nothing Then
           For i = objFolder.Items.Count To 1 Step -1
               Set objItem = objFolder.Items(i)
               If TypeOf objItem Is Outlook.MailItem Then
                   If DateDiff("d", objItem.ReceivedTime, Now) > daysOld Then
                       objItem.Delete
                   End If
               End If
           Next i
       End If
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 oder wähle "Ausführen" > "Sub/UserForm ausführen". Wähle das DeleteOldEmails Makro aus.
  5. Gib die Anzahl der Tage ein:

    • Ein Eingabefeld wird angezeigt, in dem Du die Anzahl der Tage eingeben kannst, nach denen die Emails gelöscht werden sollen.

Häufige Fehler und Lösungen

  • Fehler: "Method 'Delete' of object 'MailItem' failed"

    • Lösung: Stelle sicher, dass Du keine gesperrten oder schreibgeschützten Elemente versuchst zu löschen.
  • Fehler: Kein Ordner ausgewählt

    • Lösung: Achte darauf, dass Du einen Ordner über den PickerDialog auswählst, bevor Du das Makro ausführst.

Alternative Methoden

Wenn Du keine VBA-Makros verwenden möchtest, kannst Du auch die Outlook-Regeln verwenden, um Emails nach einer bestimmten Zeitspanne zu löschen:

  1. Erstelle eine Regel:

    • Gehe zu "Datei" > "Regeln und Benachrichtigungen verwalten".
    • Wähle "Neue Regel" und folge den Anweisungen, um eine Regel zu erstellen, die Emails älter als X Tage löscht.
  2. Suchordner verwenden:

    • Erstelle einen Suchordner, der alle Emails anzeigt, die älter sind als X Tage. Dies gibt Dir die Möglichkeit, manuell zu entscheiden, welche Emails Du löschen möchtest.

Praktische Beispiele

  • Um alle Emails, die älter als 12 Monate sind, zu löschen, kannst Du den daysOld Wert im Makro auf 365 setzen.
  • Wenn Du nur Emails aus einem bestimmten Ordner löschen möchtest, wähle den entsprechenden Ordner im PickerDialog aus.

Tipps für Profis

  • Backup erstellen: Bevor Du das Makro ausführst, erstelle ein Backup Deiner Emails, um Datenverlust zu vermeiden.
  • Regelmäßige Ausführung: Du kannst das Makro regelmäßig ausführen, um sicherzustellen, dass Dein Posteingang sauber bleibt.
  • Debugging: Nutze Debug.Print im Code, um Informationen über gelöschte Emails in das Direktfenster auszugeben.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Makro funktioniert?
Testiere das Makro zuerst mit einem kleinen Ordner, um sicherzugehen, dass es wie gewünscht funktioniert.

2. Kann ich das Makro auch in Outlook 2022 verwenden?
Ja, das Makro ist mit Outlook 2022 kompatibel, solange Du VBA aktivieren kannst.

3. Gibt es eine Möglichkeit, gelöschte Emails wiederherzustellen?
Wenn Du die Emails in den "Gelöschte Objekte" Ordner verschoben hast, kannst Du sie dort wiederherstellen. Ansonsten sind sie dauerhaft gelöscht.

4. Wo finde ich mehr Informationen über Outlook VBA?
Du kannst die offizielle Microsoft-Dokumentation für Outlook VBA Beispiele besuchen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige