#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 :-) Profilfoto: Miriam blitzt - Miriam Mehlman Fotografie - www.miriammehlman.at
Dieser Beitrag wurde unter Outlook, VBA abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

5 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

    Like

    • 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

      • Charlie Bravo schreibt:

        Hallo Katharina,
        alles klar, jetzt habe ich es verstanden. 🙂
        Vielen Dank nochmal.
        Viele Grüße
        Carsten

        Like

  2. Stefan schreibt:

    Hallo Katharina,

    auf einem PC mit Outlook 2016 (W10) funktioniert das Skript nicht, es passiert gar nichts.
    Als Regelbedingung habe ich:

    „Nach Erhalt einer Nachricht
    mit einer Anlage
    und nur auf diesem Computer
    Projekt1.Anhaenge_handeln_r ausführen“

    Pfad ist auf einen Ordner auf dem Desktop gesetzt.

    Was kann ich noch tun, um den Fehler zu finden?

    Viele Grüße,
    Stefan

    Like

    • katharinakanns schreibt:

      Hallo Stefan,
      schau mal in den früheren Kommentaren – das Problem „es passiert nichts“ ist ein Berechtigungsproblem, und es gibt ein paar Lösungen, eine davon sollte dann auch bei dir funktionieren.
      lg Katharina

      Like

Hinterlasse einen Kommentar