Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Outlook 2007 - Automatisch PDF-Anhänge ausdrucken bei mehreren Emails gleichzeitig

Frage Entwicklung VB for Applications

Mitglied: ISO-96

ISO-96 (Level 1) - Jetzt verbinden

26.11.2014, aktualisiert 27.11.2014, 1110 Aufrufe, 5 Kommentare, 1 Danke

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.
01.
Private Declare Function ShellExecute Lib "shell32.dll" Alias _ 
02.
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _ 
03.
ByVal lpFile As String, ByVal lpParameters As String, _ 
04.
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 
05.
 
06.
Private WithEvents Items As Outlook.Items 
07.
 
08.
Private Sub Application_Startup() 
09.
Dim Ns As Outlook.NameSpace 
10.
Dim Folder As Outlook.MAPIFolder 
11.
 
12.
Set Ns = Application.GetNamespace("MAPI") 
13.
Set Folder = Ns.GetDefaultFolder(olFolderInbox).Folders("Auto_Rechnungsdruck") 'Kontrollordner in Outlook 
14.
Set Items = Folder.Items 
15.
End Sub 
16.
 
17.
Private Sub Items_ItemAdd(ByVal Item As Object) 
18.
 
19.
If TypeOf Item Is Outlook.MailItem Then 
20.
    PrintAttachments Item 
21.
End If 
22.
End Sub 
23.
 
24.
Public Function Pause(NumberOfSeconds As Variant) 
25.
    On Error GoTo Error_GoTo 
26.
 
27.
    Dim PauseTime As Variant 
28.
    Dim Start As Variant 
29.
    Dim Elapsed As Variant 
30.
 
31.
    PauseTime = NumberOfSeconds 
32.
    Start = Timer 
33.
    Elapsed = 0 
34.
    Do While Timer < Start + PauseTime 
35.
        Elapsed = Elapsed + 1 
36.
        If Timer = 0 Then 
37.
            'Crossing midnight 
38.
            PauseTime = PauseTime - Elapsed 
39.
            Start = 0 
40.
            Elapsed = 0 
41.
        End If 
42.
        DoEvents 
43.
    Loop 
44.
 
45.
Exit_GoTo: 
46.
    On Error GoTo 0 
47.
    Exit Function 
48.
Error_GoTo: 
49.
    Debug.Print Err.Number, Err.Description, Erl 
50.
    GoTo Exit_GoTo 
51.
End Function 
52.
 
53.
Private Sub PrintAttachments(oMail As Outlook.MailItem) 
54.
On Error Resume Next 
55.
Dim colAtts As Outlook.Attachments 
56.
Dim oAtt As Outlook.Attachment 
57.
Dim bla As Boolean 
58.
bla = True 
59.
Dim sFile As String 
60.
Dim sDirectory As String 
61.
Dim sFileType As String 
62.
sDirectory = "C:\tmp\Attachment\" 'Temporärer Speicherort PDF-Anhang 
63.
Set colAtts = oMail.Attachments 
64.
If colAtts.count Then 
65.
    For Each oAtt In colAtts 
66.
        sFileType = LCase$(Right$(oAtt.FileName, 4)) 
67.
        Select Case sFileType 
68.
            Case ".pdf" 
69.
            sFile = sDirectory & oAtt.FileName 
70.
            oAtt.SaveAsFile sFile 
71.
            ShellExecute 0, "print", sFile, vbNullString, vbNullString, 0 
72.
            Pause (45) 'Zeit in Sekunden nach löschen der PDF 
73.
            Kill "C:\tmp\Attachment\" & oAtt.FileName 
74.
        End Select 
75.
    Next 
76.
End If 
77.
End Sub
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
Mitglied: 114757
26.11.2014, aktualisiert um 12:47 Uhr
Moin,
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
Bitte warten ..
Mitglied: ISO-96
27.11.2014, aktualisiert um 08:14 Uhr
Hallo jodel32,

vielen Dank für deine Antwort.

leider habe ich wenig Ahnung von VBA..

Sofern ich das richtig verfolgen kann, klingt dass schonmal nach einem richtigen Lösungsweg.

Nur habe ich kein Plan wie ich das umsetzen könnte..

01.
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) 
02.
 MsgBox "Neue E-Mail ist eingetroffen" 
03.
End Sub
Meinst du sowas in der Art?


Gruss Iso
Bitte warten ..
Mitglied: 114757
27.11.2014, aktualisiert um 11:19 Uhr
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 .......
Bitte warten ..
Mitglied: ISO-96
27.11.2014 um 11:21 Uhr
Sehr freundlich..

Bin bereits seit einigen Tagen am suchen und stöbern in anderen Foren und konnte so einigermaßen den obigen Code zusammen stellen und VBA zu lernen. Bin halt noch ein Einfänger in VBA. Nur komme ich momentan nicht weiter..

Nun wollte hier nur fragen ob jemand einen Tipp oder Lösungsbeispiel hat die das Problem was ich noch habe.

Zitat von 114757:
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.

Das hast du ja. Danke!

Hatte dazu dann was gefragt und von dir kam wieder son [...] Kommentar..

Daher.. wenn du noch auf meine Fragen beantworten würdest.. Sehr gerne!

Ansonsten spar die einfach solche Kommentare und ignoriere meinen Beitrag bitte. Das hilft uns beiden nicht weiter.

Ich verlange/will nicht das du mir grad den fertigen Code auf dem Silbertablett servierst, ich faul in meinen Sessel hocke und die Arbeit anderen machen lasse.. NEIN! Tut mir leid wenn es evtl. so rüber kam..
Ich suche währenddessen ja noch nach einer Lösung im Inet..

Gruß Iso
Bitte warten ..
Mitglied: ISO-96
08.12.2014, aktualisiert um 08:20 Uhr
Schade.


Hab den Code nun verändert und er funktioniert nun um einiges besser.
Danke nochmal jodel für deinen Tipp. Hat geholfen mit den Ordner.

Aber denke es ist zwecklos eine weitere Frage zu stellen darüber.

[/CLOSEREQUEST]
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
Outlook 2007 hängt beim öffnen von Emails (4)

Frage von xbast1x zum Thema Outlook & Mail ...

Outlook & Mail
Outlook Ressourcenplanung - Automatisch Alternativen buchen

Frage von JohnnyBeton zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...