Unter http://www.staudte-edv.de/Kunden/IMAPcleanup.asp gibt es dazu eine Anleitung.

 

Outlook 2003 IMAP Aufräummakro, Version 1.2

Dieses Makro für Microsoft Outlook 2003 entfernt beim Verlassen und Betreten von IMAP Ordnern automatisch und endgültig die gelöschten Nachrichten. Diese Funktion ist in Outlook Express noch standardmäßig enthalten, in Outlook 2003 werden gelöschte Nachrichten nur durchgestrichen und müssen dann manuell mit "Gelöschte Nachrichten permanent löschen" entfernt werden, was sehr mühsam ist.

 

Lizenzinformationen

DIESES MAKRO LÖSCHT DATEN - nämlich alle Nachrichten, die Sie vorher in Outlook zum Löschen markiert haben. Sie setzen das Makro auf eigene Gefahr ein - es ist zwar klein und harmlos, aber wir übernehmen keine Gewähr auf die Funktion und sind für Schäden nicht haftbar. Fragen Sie im Zweifelsfall Ihren Systembetreuer.

 

Technische Informationen

  • Markieren Sie den nachfolgenden Programmtext und kopieren Sie in mit Strg-C.

  • Öffnen Sie Outlook 2003 und dann im Menü Extras die Option Makro->Visual Basic-Editor.

  • Doppelklicken Sie im linken Fensterbereich "DieseOutlookSitzung"

  • Klicken Sie dann einmal ins rechte, leere Fenster und fügen Sie den Programmcode mit Strg-V ein.

  • Speichern Sie das Makro mit Strg-S.

  • Schließen Sie dann das Visual Basic Fenster.

  • Eventuell müssen Sie In Extras->Makro->Sicherheit noch die Sicherheitsstufe auf Mittel oder Niedrig stellen, damit Outlook die Ausführung des Makros erlaubt. Sie können alternativ auch ein eigenes Zertifikat erstellen und das Makroprojekt damit signieren. Dazu müssen Sie gegebenenfalls die "Digitale Signatur für VBA-Projekte" im Office-Setup nachinstallieren. Starten Sie anschließend das Tool SelfCert.exe im Ordner "C:\Programme\Microsoft Office\Officexx" (xx ist Ihre Programmversion, z.B. 11 für Office 2003) und folgenden Sie den Anweisungen. Danach wechseln Sie wieder in den Visual Basic-Editor und wählen im Menü Extras die Option Digitale Signatur. Über die Schaltfläche Wählen weisen Sie dem Projekt dann das selbst erstellte Zertifikat zu. Nach dem Speichern starten Sie Outlook neu. Beim ersten Ausführen werden Sie gefragt, ob Sie diesem Makro vertrauen. Markieren Sie das Kontrollkästchen Makros aus dieser Quelle immer vertrauen und wählen Sie Makros aktivieren. Beim nächsten Programmstart wird das Makro nun auch ohne Rückfragen ausgeführt werden, wenn Sie die Makrosicherheit auf Niedrig oder Hoch eingestellt haben.

  • Starten Sie Outlook neu und das Makro ist aktiv.

Danach muss noch jeder IMAP Ordner, den das Makro automatisch bereinigen soll, markiert werden. Dazu fügen Sie den Text IMAPCleanup irgendwo in die Beschreibung jedes Ordners ein, der vom Makro bedient werden soll:

 

  • Klicken Sie mit der rechten Maustaste auf den IMAP Ordner.

  • Wählen Sie Eigenschaften

  • Geben Sie im Beschreibungsfeld IMAPCleanup ein. Groß- und Kleinschreibung spielt keine Rolle, es kann auch anderer Text drumherum stehen.

  • Wiederholen Sie diesen Vorgang für alle anderen IMAP Ordner, ganz nach Wunsch.

Damit das Makro nicht jedes Mal eine Bestätigung einholt, bevor es die Nachrichten löscht, sollten Sie in Outlook unter Extras->Optionen->Weitere->Erweiterte Optionen->"Warnung anzeigen, bevor Elemente endgültig gelöscht werden" das Häkchen entfernen.

Das Makro wurde für Outlook 2003 unter Windows geschrieben. Es wurde von anderen Anwendern aber auch schon erfolgreich in Outlook 2000 und Outlook 2002 (XP) eingesetzt.

Der Makro-Code

 

' IMAP Aufräummakro v1.2, Staudte EDV Beratung, 5. Januar 2005, www.Staudte-EDV.de
' Dieses Makro ruft beim Betreten und Verlassen eines IMAP Ordners in Outlook 2003 (OL2K3)
' automatisch die Funktion "Gelöschte Nachrichten permanent löschen" auf und zwar für alle
' IMAP Ordner, bei denen in der Beschreibung vorher der Text IMAPcleanup eingefügt wurde.
' (Groß- und Kleinschreibung spielt keine Rolle).
' Damit das Makro nicht jedes Mal eine Bestätigung einholt, bevor es die Nachrichten löscht,
' sollten Sie in Outlook unter Extras->Optionen->Weitere->Erweiterte Optionen->"Warnung anzeigen,
' bevor Elemente endgültig gelöscht werden" das Häkchen entfernen.
' Neu in Version v1.1 ist, dass beim Starten von Outlook einmal alle Ordner durchgegangen werden.
' Das war notwendig geworden, weil manche Benutzer nur dem IMAP Posteingang benutzen und
' entsprechend nie den Ordner wechseln. Sollte diese Funktion bei Ihnen Schwierigkeiten machen,
' dann löschen Sie einfach die Funktion Application_MAPILogonComplete aus dem Makro.
' In v1.2 kamen nur kleinere Fehlerkorrekturen und Optimierungen hinzu.
' Das Makro ist Freeware und darf als solche beliebig weitergegeben und in eigene Anwendungen
' integriert werden. Wir bitten nur darum, dass ein Hinweis auf die Quelle des Makros
' angegeben wird. Weiterhin freue ich mich, wenn Sie uns eine E-Mail unter Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
' senden würden, wie zufrieden Sie mit dem Makro sind und wie Sie es gefunden haben.

' IMAP Cleanup Macro v1.2, Staudte EDV Beratung, 5-January-2005, www.Staudte-EDV.de
' This macro automatically purges deleted messages from IMAP folders in Outlook 2003 (OL2K3)
' whenever the user enters or leave an IMAP folder that has been marked for cleanup. To mark
' an IMAP folder, place the text IMAPcleanup somewhere in the description field of the folder
' (not case sensitive).
' The macro may prompt you each time it tries to purge deleted messages. To stop these prompts,
' uncheck the following option in Outlook: Tools->Options->Additional->Additional options->
' show warning before deleting messages. (I'm translating this from german Outlook, as I don't
' have an english version here. If someone can tell me the exact names of the menus and options,
' I would appreciate a note so that I can update this text. Thank you.)
' New in version v1.1 is the function that walks through all folders once when Outlook ist
' started. This became necessary as some users only used the inbox folder and never switched
' folders. If this function should cause any trouble, simply remove the Application_MAPILogonComplete
' function from the macro.
' v1.2 just adds some minor error corrections an optimizations.
' This macro is freeware and may as such be distributed freely. You may also integrate it into
' your own applications, as long as a reference to the source is maintained. We would also be
' happy to hear from you, by email to Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!, if you are satisfied with the tool
' and how you found it.

Option Explicit

Dim myOlApp As New Outlook.Application

Public WithEvents myOlExp As Outlook.Explorer

Public Sub Application_Startup()
  Set myOlExp = myOlApp.ActiveExplorer
End Sub

Public Sub Application_MAPILogonComplete()
  Dim appOutlook As Application, nsMapi As NameSpace, RootFolder As MAPIFolder, OriginalStartFolder

  Set appOutlook = CreateObject("Outlook.Application")
  Set nsMapi = appOutlook.GetNamespace("MAPI")
  
  OriginalStartFolder = ActiveExplorer.currentFolder.EntryID
  For Each RootFolder In nsMapi.Folders()
      PurgeFolderRecursively nsMapi.Folders(RootFolder.Name)
  Next
  Set ActiveExplorer.currentFolder = nsMapi.GetFolderFromID(OriginalStartFolder)
End Sub

Private Sub myOlExp_BeforeFolderSwitch(ByVal NewFolder As Object, Cancel As Boolean)
  PurgeCurrentFolder
End Sub

Private Sub myOlExp_FolderSwitch()
  PurgeCurrentFolder
End Sub

Private Sub PurgeCurrentFolder()
  Dim f As MAPIFolder
  Dim appOutlook As Application, nsMapi As NameSpace, barEdit As CommandBar
  Dim btnPurge As CommandBarButton

  Set f = myOlExp.currentFolder
  On Error GoTo skip
  If InStr(LCase(f.Description), "imapcleanup") > 0 Then
    Set appOutlook = CreateObject("Outlook.Application")
    Set nsMapi = appOutlook.GetNamespace("MAPI")
    Set barEdit = ActiveExplorer.CommandBars("Edit")
    Set btnPurge = barEdit.FindControl(msoControlButton, 5583, , , True)
    btnPurge.Execute
  End If
skip:
End Sub

Private Sub PurgeFolderRecursively(RootFolder As MAPIFolder)
  Dim currentFolder As MAPIFolder

  If InStr(LCase(RootFolder.Description), "imapcleanup") > 0 Then
    Set ActiveExplorer.currentFolder = RootFolder
    PurgeCurrentFolder
  End If

  For Each currentFolder In RootFolder.Folders
    PurgeFolderRecursively currentFolder
    DoEvents
  Next
End Sub