Outlook hält bereits viele Funktionen bereit, mit welchen sich bestimmte Aufgaben automatisieren bzw. vereinfachen lassen. Dazu zählen unter anderem die Outlook-Regeln.
Jedoch gibt es aber nicht für alle Aufgaben eine passende Funktion. Dafür kann man aber in Mircosofts Outlook VBA (Visual Basic for Applications) benutzen, um flexibel eigene Funktionen zu programmieren und Arbeitsabläufe anzupassen. Dies können die wenigsten anderen E-Mail-Programme vorweisen.
Will man einen PDF-Anhang aus einer E-Mail heraus drucken, dann öffnet man meistens die PDF-Datei im Adobe Reader und hangelt sich dort zum Drucken-Menü vor. Das sind bei wiederkehrenden Aufgaben unnötig viele Klicks. Und meistens sind noch andere Arbeitsabläufe damit verbunden, wie das Speichern des E-Mail Anhang unter einem bestimmten Pfad.
Ein typischer routinemäßiger Arbeitsprozess kann hier sein, dass man per Mail eine Rechnung erhält. Diese möchte man für die Buchhaltung unter einem bestimmten Pfad speichern und dann gleichzeitig auf den Drucker schicken.
PDF-Datei aus E-Mail automatisch Drucken
Das Drucken einer PDF-Datei, die als Anhang einer E-Mail beigefügt ist, kann man über den folgenden VBA-Code vornehmen. Mittels diesem VBA-Code werden alle PDF-Anhänge der ausgewählten E-Mails auf den Standard-Drucker gesendet.
Zum VBA-Editor gelangt man über die Tastenkombination Strg+F11 oder über die Registerkarte Entwicklertools ⇒ Visual Basic. (Die Registerkarte Entwicklertools erscheint nicht standardmäßig im Outlook. Hier kann man das anpassen: Datei zu Optionen ⇒ Menüband anpassen ⇒ Hauptregisterkarten.)
Public Sub PrintSelectedAttachments()
Dim Exp As Outlook.Explorer
Dim Sel As Outlook.Selection
Dim obj As Object
Set Exp = Application.ActiveExplorer
Set Sel = Exp.Selection
For Each obj In Sel
If TypeOf obj Is Outlook.MailItem Then
PrintAttachments obj
End If
Next
End Sub
Private Sub PrintAttachments(oMail As Outlook.MailItem)
On Error Resume Next
Dim colAtts As Outlook.Attachments
Dim oAtt As Outlook.Attachment
Dim sFile As String
Dim sFileType As String
Dim ATTACHMENT_DIRECTORY As String
'Pfad, wo Anlage temporär zwischen gespeichert wird
ATTACHMENT_DIRECTORY = "c:\Users\MeinBenutzer\Downloads\"
Set colAtts = oMail.Attachments
If colAtts.Count Then
For Each oAtt In colAtts
sFileType = LCase$(Right$(oAtt.FileName, 4))
Select Case sFileType
Case ".pdf"
sFile = ATTACHMENT_DIRECTORY & oAtt.FileName
oAtt.SaveAsFile sFile
ShellExecute 0, "print", sFile, vbNullString, vbNullString, 0
'warten eine bestimmte Zeit (Millisekunden) bis Drucken abgeschlossen
Sleep 10000
'wenn erfolgreich gedruck, dann Datei wieder löschen
Kill sFile
End Select
Next
End If
End Sub
Wie man sieht, wird hier der Befehl ShellExecute ausgeführt. Dieser Befehl greif auf eine WinAPI zu. Dies ist notwendig, weil es sich beim Drucken um einen Dienst außerhalb der Microsoft Outlook-Umgebung handelt. Damit das Drucken der PDF-Datei funktioniert, muss man noch am Anfang des VBA-Moduls, vor dem eigenlichen Code, die folgende DLL einbinden.
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare PtrSafe Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Die zweite Deklaration dient dazu die Sleep-Funktion zu deklarieren. Im Programm-Code verwenden wird dann Sleep, um eine bestimmte Zeit abzuwarten, bis die ShellExecute-Funktion das Drucken abgeschlossen hat. Die Wartezeit muss in Millisekunden angegeben werden und sollte ggf. angepasst werden, wenn der Druckvorgang länger dauert, das es sonst zu einer Fehlermeldung kommt. Danach wird der temporär gespeicherte Anhang wieder gelöscht.
VBA Makro Datei-Anhang Drucken ausführen
Nun hat man ein fertiges Makro, welches sich auch mit weiteren Makros kombinieren lässt. Um auf das Makro zuzugreifen, geht man auf Entwicklertools ⇒ Makro ⇒ Makros-Dialog. Damit das Makro hier erscheint, darf es nicht als Private deklariert sein.
Noch schöner ist, wenn man direkt über den Schnellzugriff darauf zugreifen kann. Die nachfolgenden beiden Screenshots zeigen, wie man dies bewerkstelligen kann.
Über den Ändern-Button kann man dann seinem Makro noch ein eigens Icon und einen eigenen passenden Text zuweisen.
- Für eine Person
- auf bis zu 5 Geräten gleichzeitig nutzen
- funktioniert auf PC, Mac, iPhone, iPad und Android-Smartphones und -Tablets