#Outlook #Anhänge von Anhängen speichern #jöeineRekursion


Da kam doch neulich  in den Kommentaren der Wunsch auf, nicht nur #Anhänge von E-Mails zu speichern, sondern #Anhänge von #Anhängen. Geht das?

Ja. Ich hab die ursprüngliche Prozedur ein bisschen erweitert:

Public Sub Anhaenge_handeln_r(myItem As Outlook.MailItem)
Dim myNameSpace As NameSpace
Dim mAtts As Attachments
Dim mAtt As Attachment
Dim inAtt As Outlook.MailItem
    Set myNameSpace = GetNamespace("MAPI")
    Set mAtts = myItem.Attachments
    While mAtts.Count > 0
        Set mAtt = mAtts(1)
        mAtt.SaveAsFile "D:\meinSpeicherort\" & mAtt.FileName
        If Right(mAtt.FileName, 4) = ".msg" Then
            Set inAtt = myNameSpace.OpenSharedItem("D:\meinSpeicherort\" & mAtt.FileName)
            Call Anhaenge_handeln_r(inAtt)
           Set inAtt = Nothing
        End If
        mAtts.Remove 1
    Wend
    Set mAtt = Nothing
    Set mAtts = Nothing
    Set myNameSpace = Nothing
End Sub

Und was geschieht da genau?

Die Anhänge werden gespeichert. Und wenn ein Anhang eine .msg-Datei ist, dann wird sie sodann geöffnet, und das Spiel beginnt von neuem. Die Prozedur ruft sich selbst auf, bis alle Anhänge abgearbeitet sind – das nennt man, wenn Sie ein Wort zum Angeben brauchen, Rekursion.

(Und wer genau schaut, sieht, dass ich – im Gegensatz zum Originalschnipsel – am Schluss die Objektvariablen ordentlich aufräume. So gehört sich das auch; ich hab nur damals keinen Wert drauf gelegt :-).)

Über katharinakanns

Microsoft Office Master Specialist mit viel Verständnis für IHR Geschäft - ich analysiere IHRE Situation, optimiere IHRE Prozesse, automatisiere IHRE Routineaufgaben, finde IHRE Lösung, unterrichte IHRE MitarbeiterInnen, mache Vorlagen mit IHRER CI, spare IHRE Zeit und IHR Geld. Ich freue mich darauf, SIE kennenlernen zu dürfen :-)
Dieser Beitrag wurde unter Outlook, VBA abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

3 Antworten zu #Outlook #Anhänge von Anhängen speichern #jöeineRekursion

  1. Charlie Bravo schreibt:

    Hallo Katharina,
    vielen, vielen Dank für das Script. Nach einigem Basteln funktioniert ist jetzt bei mir. 🙂
    Eine Frage: Die MSG-Datei aus der „zweiten Ebene“ wird bei mir ebenfalls gespeichert obwohl mich ja eigentlich nur die PDF-Datei interessiert. Kann man das evtl. noch irgendwie abstellen? Falls nicht, wäre es auch nicht wild. Ein paar Dateien löschen geht um einiges schneller als sich durch die ganzen Anhänge zu klicken. 🙂
    Viele Grüße
    Carsten

    Gefällt mir

    • katharinakanns schreibt:

      Hallo Carsten,
      das lässt sich nicht verhindern; die .msg müssen erst einmal wo abgelegt sein, um weiter durchsucht werden zu können.
      Was schon ginge: Nach der Zeile
      Call Anhaenge_handeln_r(inAtt)
      die Datei wieder löschen … also gibt’s demnächst einen Blogbeitrag zum Dateilöschen mit VBA 🙂
      lg
      Katharina

      Gefällt 1 Person

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s