
Drukowanie zaznaczonych wiadomości oraz plików PDF załączonych do tych wiadomości
autor OShon 2010-12-02 14:04:00 w Makra
tagi: załącznik, pdf, plik, wiadomość, drukowanie
0 komenarze | Dodaj komentarz
tagi: załącznik, pdf, plik, wiadomość, drukowanie
0 komenarze | Dodaj komentarz
Coraz częściej spotykamy się z wiadomościami email, w których załączone są dokumenty w formacie PDF. W większości przedsiębiorstw wymaga się, aby pliki takie zostały wydrukowane i dołączone w formie papierowej do tradycyjnego archiwum dokumentów (np. w dziale księgowości). Jak jednak wydrukować wiadomość z załącznikiem PDF?
MS Outlook po wybraniu opcji drukowania ogranicza się jedynie do wydrukowania treści wiadomości. Lecz co z załącznikami? Zwykle należy je otworzyć i wydrukować osobno.
Poniżej przedstawiony kod makra umożliwia automatyzację powyższych działań i to nawet bez konieczności otwierania emaili - wystarczy zaznaczyć wiadomości na liście w Outlooku.
Option Explicit On
Dim oMail As MailItem, item As Object
Dim oAtmt As Attachment, FileName$, x&
Sub drukuj()
'Dla wszystkich plików PDF
Call PrintPDFAttachments4SelectionEmail()
'Dla tylko tych które w nazwie zawierają słowo "faktura"
'Call PrintPDFAttachments4SelectionEmail("faktura")
For Each oMail In Application.ActiveExplorer.Selection
oMail.PrintOut() 'Można zwielokrotnić drukowanie powielając tą linię
Next
End Sub
Private Sub PrintPDFAttachments4SelectionEmail(Optional AttName$)
If FileExists("C:\Temp") = False Then MkDir("C:\Temp")
On Error GoTo blad
For Each item In Application.ActiveExplorer.Selection
If item.Class = 43 Then
oMail = item
If oMail.Attachments.Count > 0 Then
For Each oAtmt In oMail.Attachments
If Len(AttName) = 0 Then
ones:
FileName = "C:\Temp\" & oAtmt.FileName
If FileExists(FileName) = True Then Kill(FileName) 'lub odpytanie komendą MSGBOX z parametrem.
oAtmt.SaveAsFile(FileName)
If Right$(UCase(oAtmt.FileName), 3) = "PDF" Then
Shell("""c:\Program Files (x86)\Adobe\Reader 9.0\Reader\acrord32.exe"" /h /p """ + FileName + """", vbHide)
End If
Else
If InStr(1, UCase(oAtmt.FileName), UCase(AttName)) > 0 Then GoTo ones
End If
Next oAtmt
End If
End If
Next item
Exit Sub
blad:
MsgBox(Err.Number & vbCr & Err.Description, vbExclamation, "O'Shon from VBATools.pl")
End Sub
Private Function FileExists(ByVal FilePath As String) As Boolean
On Error GoTo blad
FileExists = Len(Dir(FilePath, vbDirectory Or vbHidden Or vbSystem)) > 0
Exit Function
blad:
FileExists = False
End Function
Ze względu na możliwość instalacji programu Acrobat Reader w różnych miejscach na dysku twardym należy w kodzie podać poprawną ścieżkę do pliku „acrord32.exe”, który domyślnie znajduje się w folderze instalacyjnym programu.
W przypadku problemów z samym wydrukiem pliku PDF (np. źle wyświetlane znaki specjalne), należy pamiętać, iż w konfiguracji drukarki dobrze jest ustawić opcję Drukować jako obraz w menu Drukowanie/Zaawansowane.
Aby uprościć pracę z makrem można je przypisać do przycisku w pasku menu lub skorzystać z automatycznego uruchamiania makra, tworząc nową regułę w kreatorze reguł dostępnym w menu Narzędzia, Reguły i alerty.
Shon Oskar – www.VBATools.pl
© Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.
