Microsoft Outlook troubleshooting

Zastanawiasz się jak dostać listę załączników maila, to proste, wystarczy pętla po kolekcji załączników - wiele razy przytaczana na łamach internetu. Ale czy zastanawiałeś się jak dostać się do załączników osadzonych w załączniku wiadomości, który je zawiera?

W Outlooku możesz zapisać załączniki na dysku lub otworzyć załacznik msg (dołaczoną wiadomość) aby dostać się do środka i stamtąd zapisać pliki. Ale jak to zrobić kodem, bez wyświetlania osadzonych w mailu wiadomości plików?

Poniższy przykład (rys1) zawiera 3 załączniki, w tym jeden z nich (baza) to załączona wiadomość:



W ten sam sposób, zapisując wpierw załączniki na lokalnym dysku, a potem otwierając je jako szablon tworząc nowy obiekt:

Sub Lista_zagniezdzonych_zalacznikow() 
'MVP OShon from VBATools.pl
Dim olMail As MailItem, at As Attachment, ats As Attachments, at2 As Attachment
Dim olNowyMail As MailItem, olApp As Object
Const temp_folder$ = "C:\Temp\" 'ścieżka dla zapisu załącznika msg
On Error GoTo blad
Set olMail = Application.ActiveInspector.CurrentItem 'test na otwartym mailu
If olMail.Attachments.Count = 0 Then MsgBox "Otwarta wiadomość """ & olMail.Subject & _
""" nie zawiera załączników.", vbInformation, "VBATools.pl"
On Error GoTo 0
For Each at In olMail.Attachments
If at.Type = 5 Then
'zapis pliku msg na dysk ponieważ nie można dostać się do listy załączników
at.SaveAsFile temp_folder & at.FileName

Set olApp = GetObject(, "Outlook.Application")
Set olNowyMail = olApp.CreateItemFromTemplate(temp_folder & at.FileName)
'lista załaczników pliku msg
For Each at2 In olNowyMail.Attachments
Debug.Print at2.FileName 'widoczne w oknie immediate [Ctrl+G]
Next at2
Set olNowyMail = Nothing
Set olApp = Nothing
Else
'zwykłe załaczniki
Debug.Print at.FileName
End If
Next at
Exit Sub
blad:
If Err.Number = 91 Then MsgBox "Otwórz wiadomość z załącznikami i uruchom procedurę ponownie!", _
vbCritical, "VBATools.pl" Else MsgBox Err.Number & vbCr & Err.Description, _
vbInformation, "Informacja o błędzie"
End Sub

Efekt działania kodu pokazuje okno immediate (rys2), który odkrywa iż w dołączonej wiadomości znajdował się załącznik "Kopia.rar"

Pozostałe pliki, to grafika użyta w stopce wiadomości.

Wyświetlić albo zapisać załączniki.. teraz to potrafisz prawda ;]

MVP Shon Oskar – VBATools.pl
Jeśli masz pytania dot. tego artykułu zapraszam na Forum
Skonfiguruj swój pakiet dodatków do Excela, Worda, PowerPointa i Outlooka



© Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.