Anhang nicht spurlos tilgen
Wir erhalten viele Dateien als Anhänge. Um den Server zu entlasten, möchten wir die angehängten Dateien löschen. Damit dokumentiert ist, was im Mail geschickt wurde, ist ein Verweis auf die Datei notwendig. Ist das in Outlook möglich?
NIKLAUS SCHWARZ, BAAR
Sie können in Outlook Anhänge aus dem E-Mail löschen: Dazu öffnen Sie die Nachricht, klicken mit der rechten Maustaste auf das Icon einer Anlage und wählen «Entfernen» aus dem Kontextmenü.
Anders als zum Beispiel Thunderbird mit den Attachment Tools tilgt Outlook den Anhang, ohne eine Spur zu hinterlassen. Über ein Makro lässt sich dieses Manko aber wettmachen. Auf der Kummerbox-Website steht der Code bereit, der von allen Mails im Posteingang den Anhang entfernt und am Ende der Nachricht einen Hinweis mit Name und Speicherort des Anhangs einfügt. Das Makro ist kostenlos.
www.kummerbox.ch/dyn/digital/kummer/517594.html
SCREEN TA
Der Anhang macht einen Abgang.
Kummerbox-Beitrag «Anhang nicht spurlos tilgen» vom 11. Juli 2005
Damit der Anhang Spuren hinterlässt
Ein Makro für Outlook befreit die Mails von den Dateianhängen, allerdings nicht einen Hinweis auf die gelöschte Datei zu hinterlassen.
In Outlook ist es recht einfach, Anhänge aus E-Mail-Nachrichten zu löschen, um nur die Nachricht selbst, nicht aber den Dateianhang im Outlook-Datenspeicher zu archivieren. Allerdings bleibt in den Mails kein Hinweis auf das gelöschte Attachment zurück, sodass sich später nicht mehr nachvollziehen lässt, welche Informationen zu der Nachricht gehörten.
Das folgende Marko speichert die Anhänge aller Nachrichten im Posteingang auf der Festplatte, löscht sie dann aus dem Mail und fügt am Ende des Nachrichtentexts den Namen und den Speicherort des gelöschten Attachments hinzu:
Public Sub AnhangExport()
Dim Mail As MailItem
Dim InBox As Items
Dim Anhang As Attachment
Dim i As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
Set InBox = Application.Session.GetDefaultFolder(olFolderInbox).Items
AnhangPfad = InputBox("Wo soll der Anhang gespeichert werden?", "Speicherort angeben", Environ$("USERPROFILE") & "\Eigene Dateien")
If AnhangPfad = "" Then Exit Sub
If Right(AnhangPfad, 1) <> "\" Then AnhangPfad = AnhangPfad & "\"
If Not (FSO.FolderExists(AnhangPfad)) Then
MsgBox "Den Ordner " & AnhangPfad & "gibt es nicht!" & vbCrLf & "Das Makro wird beendet."
Exit Sub
End If
For Each Mail In InBox
If Mail.Attachments.Count > 0 Then
For i = Mail.Attachments.Count To 0 Step -1
On Error GoTo EndRound
Set Anhang = Mail.Attachments(i)
Anhang.SaveAsFile AnhangPfad & Anhang.FileName
Mail.Body = Mail.Body & vbCrLf & "Der folgende Anhang wurde aus der Nachricht gelöscht: " & AnhangPfad & Anhang.FileName
Anhang.Delete
Mail.Save
EndRound:
Next
End If
Next
Set Mail = Nothing
Set InBox = Nothing
End Sub
Um das Makro zu installieren, wählen Sie in Outlook den Befehl «Extras > Makro > Makros», vergeben unter «Makroname» die Bezeichnung «AnhangExport» und klicken auf die Schaltfläche «Erstellen». Fügen Sie dann den oben stehenden Code ins Code-Fenster ein und wählen den Befehl «Datei > Schliessen und zurück zu Microsoft Office Outlook». Um das Makro schnell abrufen zu können, richten Sie eine Schaltfläche in Outlooks Symbolleiste ein. Dazu betätigen Sie in Outlook den Befehl «Extras > Anpassen». Wählen Sie links in der Kategorie den Eintrag «Makros». Klicken Sie dann rechts bei «Befehle» das Makro «AnhangExport» mit der linken Maustaste an, halten Sie die Taste gedrückt und ziehen Sie den Befehl in die Symbolleiste und positionieren ihn wunschgemäss. Indem Sie den Makrobefehl in der Symbolleiste mit der rechten Maustaste anklicken, können Sie die Beschriftung anpassen und auch ein Symbol für das die Schaltfläche wählen.
Das Makro haben wir mit Outlook 2000 und Outlook 2003 getestet.
Anhänge zum Anklicken
Ergänzung vom 30. April 2008: Ein Leser fragt, ob es möglich wäre, das Makro so zu ergänzen, dass der Hinweis auf die ausgelagerten Mails als Hyperlink angelegt wird. So könnte man per Mausklick den Anhang öffnen und müsste die Daten nicht via Explorer suchen.
Das geht; allerdings nur bei HTML-Mails:
If Mail.BodyFormat = olFormatPlain Then _
Mail.Body = Mail.Body & vbCrLf & "Der folgende Anhang wurde aus der Nachricht gelöscht: " & AnhangPfad & Anhang.FileName
If Mail.BodyFormat = olFormatHTML Then
tStr = Mail.HTMLBody
Pos = InStr(1, LCase(tStr), "</body>")
If Pos > 0 Then tStr = Left(tStr, Pos - 1)
tStr = tStr & "<p>Der folgende Anhang wurde aus der Nachricht gelöscht: <a href=" _
& Chr(34) & AnhangPfad & Anhang.FileName & Chr(34) & ">" & AnhangPfad & Anhang.FileName & "</a></p></body></html>"
Mail.HTMLBody = tStr
End If
Diesen Code fügen Sie bei dem Makro-Code oben anstelle der Code-Zeile Mail.Body = Mail.Body … ein.
Da HTML-Mails oft recht seltsam codiert sind, funktioniert das womöglich nicht in jedem Mail.
Speicherfresser eliminiert: Ein Hinweis am Ende des Mails erwähnt den Anhang, der zwecks Entlastung der Outlook-Mailablage gelöscht wurde.

