Anlagen einer E-Mail einfügen

Zuletzt geändert am 03. April 2013

Beim Antworten auf E-Mails werden die Anlagen normalerweise nicht mit zurückgeschickt. Möchte man dies aber dennoch tun, so kann man dazu als Hilfe diesen Code verwenden.

Nach dem Sie auf "Antworten" geklickt haben, wird eine neue E-Mail geöffnet. Je nach Einstellung wird dabei die Original-E-Mail geschlossen. In jedem Fall bleibt sie zunächst markiert. Wenn Sie jetzt diesen Code ausführen, werden die Anlagen der Original-E-Mail in die Antwort eingefügt.

Alternativ zu diesem Code können Sie auch den AttachmentsManager einsetzen, der noch viele weitere Funktionen zur Anlagenbehandlung bietet.

Zur Verwendung dieses Beispiels beachten Sie bitte die wichtigen Hinweise, sowie den Workshop VBA in Outlook® verwenden. Den Code bitte in ein neues Modul kopieren (Einfügen -> Modul im VBA-Editor).

Ab Outlook® 2000 - VB-Skript erforderlich

Option Explicit
 
Public Sub InsertAttachments()
 
    '=====================================================================
    ' Fügt in eine geöffnete E-Mail die Anlagen einer markierten E-Mail ein
    ' (c) Peter Marchert - http://www.outlook-stuff.com
    ' 2008-12-18 Version 1.0.0
    '=====================================================================

    Dim objMail As Outlook.MailItem
    Dim objAnswer As Outlook.MailItem
    Dim objAttachment As Outlook.Attachment
    Dim objAttachments As Outlook.ATTACHMENTS
    Dim strMyDocuments As String
    Dim strAttachment As String
 
    '---------------------------------------------------------------------
    ' Fehlerbehandlung wegen Set-Anweisungen ausschalten
    '---------------------------------------------------------------------
    On Error Resume Next
 
    '---------------------------------------------------------------------
    ' Markierte E-Mail referenzieren (= Originalmail)
    '---------------------------------------------------------------------
    Set objMail = Outlook.ActiveExplorer.Selection(1)
 
    '---------------------------------------------------------------------
    ' Keine E-Mail markiert?
    '---------------------------------------------------------------------
    If objMail Is Nothing Then GoTo ExitProc
 
    '---------------------------------------------------------------------
    ' Geöffnete E-Mail referenzieren (= Antwort)
    '---------------------------------------------------------------------
    Set objAnswer = Outlook.ActiveInspector.CurrentItem
 
    '---------------------------------------------------------------------
    ' Anlagen der Originalmail referenzieren
    '---------------------------------------------------------------------
    Set objAttachments = objMail.Attachments
 
    '---------------------------------------------------------------------
    ' Ordner "Eigenen Dateien" bzw. "Dokumente" ermitteln
    '---------------------------------------------------------------------
    strMyDocuments = GetMyDocuments
 
    '---------------------------------------------------------------------
    ' Alle Anlagen in die aktuell geöffnete "übertragen"
    '---------------------------------------------------------------------
    For Each objAttachment In objAttachments
 
        '-----------------------------------------------------------------
        ' Anlage temporär speichern
        '-----------------------------------------------------------------
        Call objAttachment.SaveAsFile(strMyDocuments & "\" & objAttachment.FileName)
 
        '-----------------------------------------------------------------
        ' Anlage in Antwort hinzufügen
        '-----------------------------------------------------------------
        Call objAnswer.Attachments.Add(strMyDocuments & "\" & objAttachment.FileName)
 
        '-----------------------------------------------------------------
        ' Temporäre Anlage löschen
        '-----------------------------------------------------------------
        Call Kill(strMyDocuments & "\" & objAttachment.FileName)
 
    Next
 
ExitProc:
 
    '---------------------------------------------------------------------
    ' Clean Up
    '---------------------------------------------------------------------
    Set objMail = Nothing
    Set objAnswer = Nothing
    Set objAttachment = Nothing
    Set objAttachments = Nothing
 
End Sub
 
Private Function GetMyDocuments() As String
 
    '=====================================================================
    ' Gibt den Ordner "Eigene Dateien" zurück
    ' 2008-12-18 Version 1.0.0
    '=====================================================================
 
    Dim objWshShell As Object     ' Windows Script Host
 
    On Error Resume Next
 
    '---------------------------------------------------------------------
    ' Instanz des Windows Script Host starten
    '---------------------------------------------------------------------
    Set objWshShell = CreateObject("WScript.Shell")
 
    '---------------------------------------------------------------------
    ' Ordner "Eigene Dateien" bzw. "Dokumente" zurückgeben
    '---------------------------------------------------------------------
    GetMyDocuments = objWshShell.SpecialFolders("MyDocuments")
 
    '---------------------------------------------------------------------
    ' Clean Up
    '---------------------------------------------------------------------
    Set objWshShell = Nothing
 
End Function