Severus schrieb am 15.12.2010 13:16:57:
Stefan76 schrieb am 15.12.2010 08:18:16:
Severus schrieb am 14.12.2010 19:29:50:
Stefan76 schrieb am 14.12.2010 16:45:08:
Hallo Leute,
aktuell lasse ich in Outlook 2003 per VBA alle PDF Anhänge in neuen Mails
automatisch Drucken. Ist es möglich nur PDF Anhänge von bestimmten Absendern wie z.b. *@123.de drucken zu lassen??
Hier mein bisheriger Code der unter ThisOutlookSession steht:
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)
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
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 sDirectory As String
Dim sFileType As String
sDirectory = "D:\Attachments\"
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
End Select
Next
End If
End Sub
Ich hoffe mir kann hier jemand helfen.
Schon mal Danke!!!!
Das ist für mich ein bißchen ein Problem! Privat würde ich nie Outlook verwenden. Es ist daher ein bißchen problematisch sich an die Eigenschaften zu erinnern. Ich denke aber, daß es so gehen müßte:
If InStr(1, UCase(oMail.SenderEmailAddress), "@123.DE", vbBinaryCompare) = 0 Then Exit Sub
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
End Select
Next
End If
Severus
Hallo hab den Code jetzt getestet leider funktioniert er nicht. Jetzt wird gar nichts mehr gedruckt! Hast
Du evtl. noch eine Idee!?!#
Gruß
Setz mal einen Haltepunkt vor die Codezeile von mir und schau mal, was da als oMail.SenderEmailAddress ausgegeben wird, oder, noch einfacher, setze ein
MsgBox UCase(oMail.SenderEmailAddress)
vor diese Zeile: Dann bekommst Du im fraglichen Fall die Mailadressen angezeigt. Vielleicht kannst Du so feststellen, warum die Zeichenfolge "@123.DE" nicht gefunden gefunden wird.
Wie gesagt: Ich verwende Outlook Privat nicht und habe es deshalb gar nicht installiert. Könnte Dir daher erst weiterhelfen, wenn ich wieder im Büro bin (wegen Urlaub erst im Januar)
BTW: Bitte keinesfalls das Asterisk (*) ebenfalls in die Zeichenfolge "@123.DE" einfügen! Also NICHT "*@123.DE" !
Severus
Hallo also hab das jetzt getestet bekomm es leider nicht hin wenn du evtl im Januar nochmal teste könntest wäre super hab die Zeile eingefügt aber bekomm keine Meldung vor allem wird dann gar nichts mehr gedruckt. Hab es auch mit if oMail.SenderEmailAdress ="@123.de" then... versucht aber auch nichts muss ich noch irgendwas vorher zuordnen oder so!? Hab den Code nur Kopiert und muss zugeben bin mir nicht ganz bewusst was genau passiert.
Gruß
Stefan |