Microsoft Outlook troubleshooting

W rozwinięciu artykułu Podgląd źródła wiadomości, w którym można dowiedzieć się jak włączyć opcję poglądu źródła we właściwościach wiadomości, oraz w nawiązaniu do artykułu: PropertyAccesor Object powstała myśl innego wykorzystania treści i zapisu nagłówków wiadomości (bez nawiązania do właściwości obiektu Outlooka).

 

Rys 1. Właściwości ukazujące nagłówki internetowe wiadomości email

Poniżej przedstawiony jest wynik działania procedury VBA polegającej na zapisie danych składających się na utworzenie wiadomości emalii do plików tekstowych. Taki eksport danych może być podstawą do archiwizacji, w przypadkach kiedy odczyt treści nie jest koniecznie ukierunkowany na Outlooka.

 

Rys 2. Eksport wiadomości do pliku txt

 

Kod exportu dla zaznaczonych wiadomości podaję poniżej.

Option Explicit
Sub Kopiowanie_naglowkow_wiadomosci()
on error goto blad
Const Sciazka$ = "C:\Email_Headers\" 'dowolne miejsce zapisu
Const PR$ = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"
Dim el As Object, sHeader$, oMail As MailItem, sPlik$, F%: F = FreeFile
For Each el In Application.ActiveExplorer.Selection 'dla zaznaczonych wiadomości
If el.Class = olMail Then
Set oMail = el
With oMail
sHeader = .PropertyAccessor.GetProperty(PR)
If sHeader <> "" Then
sPlik = Sciazka & Format(.CreationTime, "YYYY-MM-DD_HH-MM") & _
" " & RemoveInvalidChar(.SenderName & " ~" & .Subject) & ".txt"
Open sPlik For Output As #F
Print #F, sHeader
Close #F
End If
End With
Set oMail = Nothing
End If
Next el
exit sub
blad:
MsgBox Err.Number & " " & Err.Description, vbCritical, "VBATools.pl"
End Sub

Public Function RemoveInvalidChar(str As String)
Dim f As Long
For f = 1 To Len(str)
str = Replace(str, Mid$("\/:?""<>|*", f, 1), vbNullString)
Next
str = Replace(str, vbTab, vbNullString)
str = Replace(str, vbCrLf, vbNullString)

RemoveInvalidChar = str
End Function

W powyższym kodzie zastosowano funkcję pomocniczą, mającą na celu usunięcie znaków, które są zabronione podczas nadawania nazwy pliku.

Dzięki małym modyfikacjom, można wykonać export wszystkich wiadomości z danego folderu (lub całego repozytorium) do jednego pliku TXT, który następnie można wysłać do zewnętrznej bazy, lub zmodyfikować procedurę aby każda z przychodzących wiadomości reagowała na regułę zapisującą wiadomość w postaci źródła na sieciowym katalogu lub wykorzystując metodę ADO eksportowała nagłówek wprost do bazy danych na firmowym serwerze.


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.