da ich sehr selten Dinge auf Papier drucke, stellen sich mir manche Fragen gar nicht.
Wie zum Beispiel, ob und wie man von mehr als einer E-Mail die Anhänge auf einmal drucken kann.
Standardmäßig kann Outlook das grundsätzlich schon.
Das Vorgehen dabei:
Alle E-Mails mit Anhängen markieren.
Zum Reiter „Datei“ wechseln.
Das Menü „Drucken“ wählen.
Es kann einen Moment dauern, bis die Druckoptionen zur Verfügung stehen.
Dort den Haken bei „Anlagen drucken. Anlagen werden nur mit dem Standarddrucker gedruckt.“ setzen und drucken.
Der Nachteil dabei ist, dass die E-Mail mit gedruckt wird.
Unter dieser Seite fand ich etwas vbs-Code, dass man als Makro einbinden kann.
Damit werden ausschließlich die Anhänge gedruckt.
Zur Implementierung öffnet man Outlook und wechselt mit ALT+F11 zum VBA-Editor.
Es öffnet sich eine neues Fenster mit dem Titel „Microsoft Visual Basic for Aplications“
Über das Kontextmenü fügt man ein neues Modul und den VBA-Code ein und speichert das Modul.
Sub BatchPrintAllAttachmentsinMultipleEmails()
Dim objFileSystem As Object
Dim strTempFolder As String
Dim objSelection As Outlook.Selection
Dim objItem As Object
Dim objMail As Outlook.MailItem
Dim objAttachments As Outlook.attachments
Dim objAttachment As Outlook.Attachment
Dim objShell As Object
Dim objTempFolder As Object
Dim objTempFolderItem As Object
Dim strFilePath As String
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
strTempFolder = objFileSystem.GetSpecialFolder(2).Path & "\Temp for Attachments " & Format(Now, "YYYY-MM-DD_hh-mm-ss")
'Create a new temp folder
MkDir (strTempFolder)
Set objSelection = Outlook.Application.ActiveExplorer.Selection
For Each objItem In objSelection
If TypeOf objItem Is MailItem Then
Set objMail = objItem
Set objAttachments = objMail.attachments
'Save all the attachments in the temp folder
For Each objAttachment In objAttachments
strFilePath = strTempFolder & "\" & objAttachment.FileName
objAttachment.SaveAsFile (strFilePath)
'Print all the files in the temp folder
Set objShell = CreateObject("Shell.Application")
Set objTempFolder = objShell.NameSpace(0)
Set objTempFolderItem = objTempFolder.ParseName(strFilePath)
objTempFolderItem.InvokeVerbEx ("print")
Next objAttachment
End If
Next
End Sub
Der Editor kann nun geschlossen werden.
Um das Makro dem Schnellzugriff hinzuzufügen, klickt man auf das Pfeil-nach-unten-Symbol und wählt „Weitere Befehle…“.
Im Untermenü wählt man „Makros“ aus und fügt das „Projekt1.BatchPrintAllAttachmentsinMultipleEmails“ dem Schnellzugriff hinzu.
Wer möchte, der kann dem Makro noch ein eigenes/ anderes Icon über den „Ändern…“-Dialog zuweisen.
Alles speichern und ab sofort könne aus E-Mails heraus nur die Anhänge in masse gedruckt werden.
PS: Es gibt weitere Bedingungen: der Acrobat Reader ist die Standard-Anwendung für PDF und die Makrosicherheit in Office muss deaktiviert sein.
Office-Updates stellen gern mal die Makro-Sicherheit wieder um. Ebenso tragen sich die Edge-Browser-Updates wieder als Standard-Anwendung für PDFs ein.
Danke für diesen Beittrag, er hat mir sehr weitergeholfen!
Schön, dass es noch jemand geholfen hat.
Ja hier, mir auch!
VIELEN Dank dafür!!
Gerade wenn ich zb 10 PDF’s auf einmal drucken möchte, ohne diese vorher speichern zu müssen, möchte ich nicht ein PDF per Schnelldruck drucken, dann warten, da der PDF-Reader sich dann ja kurz öffnet und dann erst zu PDf 2 übergehen usw. usf.
Da erleichtert mir deine Anleitung das Arbeiten wesentlich!
Vielen Dank dafür!!!
Hallo,
das hat uns auch sehr geholfen.
Allerdings werden die Anhänge unsortiert gedruckt.
z.b. bei zwei Mails hat jede Mail zwei Anhänge. Diese kommen dann nicht nach einander sondern durcheinander aus dem Drucker.
Kann man da was machen?
Ich würde da eher bei den Drucker-Einstellungen schauen.
In den Eigenschaften unter „Erweitert“ die Option „Druckaufträge direkt zum Drucker schicken“.
Danke!!!!!!!!
Hallo,
ich bin sehr froh endlich eine Lösung gefunden zu haben dieses lästige Problem des Druckens der Anhänge loszuwerden.
Am Tag der Einrichtung hat es auch geklappt, als ich aber dann am nächsten Tag wieder etwas drucken wollte, reagierte der Befehl nicht. Man kann so oft drauf drücken wie man will, es druckt gar nichts.
Ich habe auch schon etwas herumprobiert, das Problem zu lösen, jedoch ohne Erfolg.
Was kann man da machen?
Es gibt weitere Bedingungen: der Acrobat Reader ist die Standard-Anwendung für PDF und die Makrosicherheit in Office sollte deaktiviert sein. Office-Updates stellen gern mal die Makro-Sicherheit wieder um.
Hi,
wir haben das auch eingerichtet und es hat funktioniert – jetzt geht gar nichts mehr, Makros sind deaktiviert.
Was kann man sonst noch machen??
Ich habe die anderen Bedingungen noch mal am Ende im Artikel ergänzt.
Es gibt weitere Bedingungen:
der Acrobat Reader ist die Standard-Anwendung für PDF und die Makrosicherheit in Office sollte deaktiviert sein.
Office-Updates stellen gern mal die Makro-Sicherheit wieder um.
Hallo,
ein User hat das Makro bei sich aktiviert und es funktioniert auch. Seit ca. 1 Woche hat der User das Problem, dass das Drucken extrem lange dauert. Als das Makro frisch eingespielt wurde, konnte der User 10-30 Anhänge sofort drucken und nach 2-3 Minuten war alles ausgedruckt. Seitdem das Problem vorhanden ist, braucht das Makro für die gleiche Anzahl an Anhängen 30-40 Minuten.
Ich habe beim User etwa zum gleichen Zeitpunkt PDF24 installiert als das Problem auftrat..
Makrosicherheit in Office ist deaktiviert (alle Makros sind zugelassen) & Acrobat Reader ist die Standart PDF-Anwendung.
Hat noch jemand eine Idee?
Schau mal mit dem Process Monitor während des Drucks, was da bremst. Plötzliche Verzögerungen können durch den Anti-Virus herkommen.
Guten Tag
Vielen Dank für dieses Super Marko. Gibt es die Möglichkeit einen anderen Drucker zu bestimmen als den Standard Drucker?
Besten Dank für die Rückmeldung.
Visual Basic ist keine meiner Kernkompetenzen und das Makro ist ja nicht von mir. Daher würde ich ein wenig damit herumspielen, um vor dem Ausdruck den gewünschten Drucker als Standard zu setzen (nach Zeile „Set objSelection=“) und am Ende des Skripts wieder zurück zu stellen (vor „End Sub“).