OLK-Ordner automatisch löschen

Zuletzt geändert am 03. April 2013

Alternativ zum Löschen des fehleranfälligen OLK-Ordners per Hand, bietet sich die Löschung aller darin befindlichen Anhänge beim Beenden von Outlook® an. Damit ist gewährleistet, dass der Ordner nicht vollläuft und dass auch niemand Ihre Anlagen dort findet.

Wem die Umsetzung dieses Beispiels zu aufwendig ist, der findet diese Funktion kostenlos auch im AttachmentsManager wieder.

Zur Verwendung dieses Beispiels beachten Sie bitte die wichtigen Hinweise, sowie den Workshop VBA in Outlook® verwenden. Den Code bitte in das Modul DieseOutlookSitzung kopieren.

Ab Outlook® 2000 - VB-Skript erforderlich

Option Explicit
 
Private Sub Application_Quit()
 
    '=====================================================================
    ' Löscht den Inhalt des OLK-Ordner beim Beenden von Outlook
    ' (c) Peter Marchert - http://www.outlook-stuff.com
    ' 2008-11-06 Version 1.0.0
    '=====================================================================

    Dim objFSO As Object
    Dim objWsh As Object
    Dim objFolder As Object
    Dim strRegKey As String
    Dim strOLK As String
 
    On Error Resume Next
 
    '---------------------------------------------------------------------
    ' Um Daten aus der Registrierung zu lesen
    '---------------------------------------------------------------------
    Set objWsh = CreateObject("WScript.Shell")
 
    '---------------------------------------------------------------------
    ' Schlüssel zusammenstellen
    '---------------------------------------------------------------------
    strRegKey = "HKCU\Software\Microsoft\Office\%.0\Outlook\Security\OutlookSecureTempFolder"
 
    '---------------------------------------------------------------------
    ' OLK-Ordner aus der Registrierung auslesen
    '---------------------------------------------------------------------
    Select Case Left(Outlook.Version, 2)
        Case "9.": strOLK = objWsh.RegRead(Replace(strRegKey, "%", "9"))
        Case "10": strOLK = objWsh.RegRead(Replace(strRegKey, "%", "10"))
        Case "11": strOLK = objWsh.RegRead(Replace(strRegKey, "%", "11"))
        Case "12": strOLK = objWsh.RegRead(Replace(strRegKey, "%", "12"))
        Case "14": strOLK = objWsh.RegRead(Replace(strRegKey, "%", "14"))
        Case Else
            MsgBox "Kann Outlook-Version nicht bestimmen.", vbCritical + _
                vbOKOnly, "Delete OLK"
            Exit Sub
    End Select
 
    '---------------------------------------------------------------------
    ' VBA bietet keine komfortable Möglichkeit, um Dateien zu löschen,
    ' daher wird VB-Script verwendet.
    '---------------------------------------------------------------------
    Set objFSO = CreateObject("Scripting.FileSystemObject")
 
    '---------------------------------------------------------------------
    '  Alle Dateien im OLK-Ordner löschen (True = Löschen erzwingen)
    '---------------------------------------------------------------------
    Call objFSO.DeleteFile(strOLK & "*.*", True)
 
    '---------------------------------------------------------------------
    ' OLK-Ordner refernzieren
    '---------------------------------------------------------------------
    Set objFolder = objFSO.GetFolder(strOLK)
 
    '---------------------------------------------------------------------
    ' Ist etwas übrig geblieben, dann Ordner öffnen
    '---------------------------------------------------------------------
    If objFolder.Files.Count Then Call Shell("explorer.exe " & strOLK)
 
    '---------------------------------------------------------------------
    ' Clean Up
    '---------------------------------------------------------------------
    Set objFolder = Nothing
    Set objFSO = Nothing
    Set objWsh = Nothing
 
End Sub