Outlook 2007 - Automatisch PDF-Anhänge ausdrucken bei mehreren Emails gleichzeitig
Hallo Administrator-Community,
und zwar brauchen wir ein VBA-Script, dass alle Rechnungen, die als PDF im Anhang einer Mail kommen, automatisch ausgedruckt werden. Also nur die PDF ohne der Mail.
Soweit sind wir bisjetzt gekommen:
Per Regel werden alle Mails mit einem Anhang und dem Wort "Rechnung" im Betreff in den Unterordner "Auto_Rechnungsdruck" vom Posteingang verschoben.
Dort wird dann folgendes Script aktiviert.
Grobe Erklärung des Codes:
Sobald eine E-Mail in den Ordner "Auto_Rechnungsdruck" kommt, wird dieser Script aktiviert.
Der Speichert nur die PDF, die im Anhang ist, in das Verzeichnis "C:\tmp\Attachment\" gespeichert, anschließend gedruckt. Danach wird die PDF wieder gelöscht, damit die Festplatte nicht unnötig voll läuft.
Da der Druckvorgang übers Netzwerk seine Zeit braucht, startet vor dem Löschvorgang ein Timer der hier 45 Sekunden geht. Ansonsten wird die PDF, bevor sie gedruckt werden kann gelöscht und der Adobe Reader bringt dementsprechend eine Fehlermeldung.
Das funktioniert eigentlich alles einwandfrei. Zumindest wenn die Emails frühestens alle 45 Sekunden eintreffen, also nachdem das Script beendet ist.
Denn nun kommen wir zu den Problemen..
Sobald mehrere Rechnungen gleichzeitig kommen, wird nur die erste PDF ausgedruckt. Alle anderen nicht.
Das ist besonders hinderlich, wenn vorallem auch Rechnungen über Nacht kommen und Rechner aus geschaltet ist, also das Script garnicht laufen kann.
Am Ende sollte es so aussehen, dass alle PDF-Anhänge automatisiert ausgedruckt werden sollen. Selbst wenn zum Beispiel 50 Rechnungen aufeinmal kommen.
Ob die PDFs alle aufeinmal bearbeitet werden oder das Script 50mal aufgerufen wird ist eigentlich egal. Dann dauert es eben 50 * 45 Sekunden.
Hätte da jemand einen Tipp oder Lösung wie bzw. ob das möglich währe?
Denn ansonsten werden wir nach einer anderen Lösung leider suchen müssen.
Mit einem externen Programm vllt..
Oder gibt es vllt einen anderen Lösungsweg?
Ich bedanke mich schonmal über jede hilfreiche Antwort.
Hoffe ich habe euch nicht zuarg verwirrt. sonst einfach fragen wenn was unverständlich ist
Mit freundlichen Grüßen Iso
und zwar brauchen wir ein VBA-Script, dass alle Rechnungen, die als PDF im Anhang einer Mail kommen, automatisch ausgedruckt werden. Also nur die PDF ohne der Mail.
Soweit sind wir bisjetzt gekommen:
Per Regel werden alle Mails mit einem Anhang und dem Wort "Rechnung" im Betreff in den Unterordner "Auto_Rechnungsdruck" vom Posteingang verschoben.
Dort wird dann folgendes Script aktiviert.
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 WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim Ns As Outlook.NameSpace
Dim Folder As Outlook.MAPIFolder
Set Ns = Application.GetNamespace("MAPI")
Set Folder = Ns.GetDefaultFolder(olFolderInbox).Folders("Auto_Rechnungsdruck") 'Kontrollordner in Outlook
Set Items = Folder.Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeOf Item Is Outlook.MailItem Then
PrintAttachments Item
End If
End Sub
Public Function Pause(NumberOfSeconds As Variant)
On Error GoTo Error_GoTo
Dim PauseTime As Variant
Dim Start As Variant
Dim Elapsed As Variant
PauseTime = NumberOfSeconds
Start = Timer
Elapsed = 0
Do While Timer < Start + PauseTime
Elapsed = Elapsed + 1
If Timer = 0 Then
'Crossing midnight
PauseTime = PauseTime - Elapsed
Start = 0
Elapsed = 0
End If
DoEvents
Loop
Exit_GoTo:
On Error GoTo 0
Exit Function
Error_GoTo:
Debug.Print Err.Number, Err.Description, Erl
GoTo Exit_GoTo
End Function
Private Sub PrintAttachments(oMail As Outlook.MailItem)
On Error Resume Next
Dim colAtts As Outlook.Attachments
Dim oAtt As Outlook.Attachment
Dim bla As Boolean
bla = True
Dim sFile As String
Dim sDirectory As String
Dim sFileType As String
sDirectory = "C:\tmp\Attachment\" 'Temporärer Speicherort PDF-Anhang
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 = sDirectory & oAtt.FileName
oAtt.SaveAsFile sFile
ShellExecute 0, "print", sFile, vbNullString, vbNullString, 0
Pause (45) 'Zeit in Sekunden nach löschen der PDF
Kill "C:\tmp\Attachment\" & oAtt.FileName
End Select
Next
End If
End Sub
Sobald eine E-Mail in den Ordner "Auto_Rechnungsdruck" kommt, wird dieser Script aktiviert.
Der Speichert nur die PDF, die im Anhang ist, in das Verzeichnis "C:\tmp\Attachment\" gespeichert, anschließend gedruckt. Danach wird die PDF wieder gelöscht, damit die Festplatte nicht unnötig voll läuft.
Da der Druckvorgang übers Netzwerk seine Zeit braucht, startet vor dem Löschvorgang ein Timer der hier 45 Sekunden geht. Ansonsten wird die PDF, bevor sie gedruckt werden kann gelöscht und der Adobe Reader bringt dementsprechend eine Fehlermeldung.
Das funktioniert eigentlich alles einwandfrei. Zumindest wenn die Emails frühestens alle 45 Sekunden eintreffen, also nachdem das Script beendet ist.
Denn nun kommen wir zu den Problemen..
Sobald mehrere Rechnungen gleichzeitig kommen, wird nur die erste PDF ausgedruckt. Alle anderen nicht.
Das ist besonders hinderlich, wenn vorallem auch Rechnungen über Nacht kommen und Rechner aus geschaltet ist, also das Script garnicht laufen kann.
Am Ende sollte es so aussehen, dass alle PDF-Anhänge automatisiert ausgedruckt werden sollen. Selbst wenn zum Beispiel 50 Rechnungen aufeinmal kommen.
Ob die PDFs alle aufeinmal bearbeitet werden oder das Script 50mal aufgerufen wird ist eigentlich egal. Dann dauert es eben 50 * 45 Sekunden.
Hätte da jemand einen Tipp oder Lösung wie bzw. ob das möglich währe?
Denn ansonsten werden wir nach einer anderen Lösung leider suchen müssen.
Mit einem externen Programm vllt..
Oder gibt es vllt einen anderen Lösungsweg?
Ich bedanke mich schonmal über jede hilfreiche Antwort.
Hoffe ich habe euch nicht zuarg verwirrt. sonst einfach fragen wenn was unverständlich ist
Mit freundlichen Grüßen Iso
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 255929
Url: https://administrator.de/forum/outlook-2007-automatisch-pdf-anhaenge-ausdrucken-bei-mehreren-emails-gleichzeitig-255929.html
Ausgedruckt am: 23.04.2025 um 09:04 Uhr
5 Kommentare
Neuester Kommentar

Moin,
mach es doch so:
1. erstelle einen weiteren Unterordner in dem Rechnungsordner für bereits gedruckte Rechnungen
2. Du bindest das Drucken der Rechnungen einmal an das NewMailEx-Event von Outlook das jedes mal auftritt, wenn eine neue Mail eintrifft.
3. Bei jedem eintreffen einer Mail überprüfst du den Rechnungs-Ordner auf neue Mails, druckst sie und verschiebst die Rechnung in den Unterordner.
4. Für den Fall das der Rechner eben nicht nachts läuft, lässt du die Prozedur ebenfalls beim Startup-Event von Outlook einmal anlaufen.
Gruß jodel32
und zwar brauchen wir ein VBA-Script
yup wir alle brauchen was ....das ist aber kein Selbstbedienungsladen hier.mach es doch so:
1. erstelle einen weiteren Unterordner in dem Rechnungsordner für bereits gedruckte Rechnungen
2. Du bindest das Drucken der Rechnungen einmal an das NewMailEx-Event von Outlook das jedes mal auftritt, wenn eine neue Mail eintrifft.
3. Bei jedem eintreffen einer Mail überprüfst du den Rechnungs-Ordner auf neue Mails, druckst sie und verschiebst die Rechnung in den Unterordner.
4. Für den Fall das der Rechner eben nicht nachts läuft, lässt du die Prozedur ebenfalls beim Startup-Event von Outlook einmal anlaufen.
Gruß jodel32

leider habe ich wenig Ahnung von VBA
Klar, dat haben sie alle nich, oh man, dann beleg erst mal einen Kurs und komm dann zurück, tsss .......