Attribute VB_Name = "ZapiszDoPdf_v19" Const DEFAULT_FOLDER As String = "C:\Users\Paweł\Documents\PDF\" 'UWAGA NA POPRAWNĄ ŚCIEŻKĘ! '------------------------------------------------------------- Const KTH_EMAIL = "e@a.com" Const KTH_VAT_ID = "IEXX1432589U" '######################################################### '# Paweł Grabowski 2018 # '# # '# Wymaga: # '# -> Outlook 2010+ ORAZ Word 2010+ # '# -> Biblioteka Microsoft word 14.0 Object Library ! # '# # '######################################################### 'zapis treci maila do pliku .pdf v1.91 Sub ConvertToPdfRaw() Call ConvertToPdf(CustomHeader:=False) End Sub Sub ConvertToPdfWithHeader() Call ConvertToPdf(CustomHeader:=True) End Sub Private Sub ConvertToPdf(Optional CustomHeader As Boolean = True) 'Dim outApp As Object: Set outApp = CreateObject("Outlook.Application") Dim myItem As Outlook.MailItem Dim FolderPath As String: FolderPath = SetFolderPath For Each myItem In Application.ActiveExplorer.Selection On Error GoTo main_error_handler 'tworzenie edytowalnej kopii obiektu myItem Dim cloneItem As Outlook.MailItem Set cloneItem = myItem.Forward 'CreateItem(0) 'olMailItem With cloneItem .Body = vbNullString If CustomHeader Then .HTMLBody = SetHtmlHeader(myItem) Else: .HTMLBody = myItem.HTMLBody End If End With ' deklaracja dla objInspector.WordEditor Dim objInspector As Object: Set objInspector = cloneItem.GetInspector Dim objDoc As Object: Set objDoc = objInspector.WordEditor Dim FileName As String: FileName = SetFileName(myItem) Dim FilePath As String: FilePath = SetUniqueFilePath(FolderPath, FileName) 'zapis do pliku (nr 17 = pdf) i oznaczenie kategorią objDoc.ExportAsFixedFormat FilePath, 17 Call AddItemCategory(myItem, "Zapisane do .pdf") Do Until Dir(FilePath) <> "" DoEvents ' opóźniacz na czas zapisywania pliku Loop cloneItem.Close olDiscard 'brak zapisu, zapobiega tworzeniu kopii roboczych Set objInspector = Nothing Set objDoc = Nothing Set cloneItem = Nothing Next myItem Exit Sub ' MUSI BYĆ POZA PĘTLĄ!!! main_error_handler: MsgBox ("Wystąpił nieoczekiwany błąd w działaniu makra!") Set objInspector = Nothing Set objDoc = Nothing Set cloneItem = Nothing End Sub Private Function SetHtmlHeader(ByRef myItem As MailItem) Dim header As String If myItem.SenderEmailAddress = KTH_EMAIL Then header = "
Numer: " & GetReservationNr(myItem) & " | |
Data: " & Format(myItem.ReceivedTime, "Short Date") & " | Data otrzymania: " & myItem.ReceivedTime & " |
EU VAT NUMER: " & KTH_VAT_ID & " | Od: " & myItem.SenderEmailAddress & " do Exim S.A. |
" & "Data: " & myItem.ReceivedTime & "
" _ & "" & "Od: " & myItem.SenderEmailAddress & "
" _ & "Temat: " & myItem.Subject End If SetHtmlHeader = header & "