Outlook VBA - Alle Anhänge drucken!
#11
Hi,
sind denn überhaupt neue ungelesene Mails im Posteingang vorhanden? Laß den Code mal mit F8 schrittweiese durchlaufen und beobachte mal diesen Variablenwert
Code:
intAnlagen = .Attachments.Count

dazu einfach den Cursor auf intAnlagen halten oder im Direktfenster beobachten. Kommt da nix außer leer gibts keine neuen Mails.
Mit freundlichen Grüßen  :)
Michael
Top
#12
Hallo Michael,


bleibt immer leer, obwohl ich ständig neue Emails bekomme mit ungelesen Anhänge!
Ich glaube ich weiss auch warum, ich habe neben dem Standard Outlook "Posteingang" mein Postfach xxx@yyy (bearbeitet von Kuwer) und hier kommen die Emails in den Posteingang!
Wie kann ich das ändern, dass der Code nicht den Standard "Posteingang" nimmt, sondern den aus meinen Postfach?


Danke
VG
Alexandra
Top
#13
Hallo zusammen,


so nun habe ich das genauso gefunden wie ich es wollte, nur das drucken der Anlagen weiß ich nicht wie ich das machen soll:

Code:
Sub Anlage_verschieben()
Dim strPath As String
Dim objMail As MailItem
Dim intAnlagen As Integer, i As Integer
On Error Resume Next
'Pfad zu meinem Ordner
strPath = "C:\Anlagen"
'Schleife
For Each objMail In Outlook.ActiveExplorer.Selection
With objMail
'Mails auf vorh. Anlagen prüfen
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
'Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & "\" & .Attachments.Item(i).FileName
Next i
'Mails löschen
'objMail.Delete
End If
End With
Next objMail
End Sub
Kann mir hier noch jemand helfen?
Vielen Dank
VG
Alexandra
Top
#14
Hi,
ergänze mal an dieser Codestelle:


Code:
For i = 1 To intAnlagen
'Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & "\" & .Attachments.Item(i).FileName
.Attechments.Item(i).print  ' diese Zeile sollte dazu führen, daß alle gefundenen Anlagen direkt ausgedruckt werden, aber das ist sicher wenig sinnvoll, jeden Mist der ankommt auch auszudrucken
Next i
Mit freundlichen Grüßen  :)
Michael
Top
#15
Hallo Michael,


leider tut sich da nichts!? :(
Nee Idee? Die Schreibweise habe ich bereits korrigiert!


Danke
Alexandra
Top
#16
Hi, da ich nicht mit Outlook arbeite liegen auch nur bedingt Infos vor. Schau mal ob dir das weiterhilft: http://www.herber.de/forum/archiv/1288to...ucken.html
Mit freundlichen Grüßen  :)
Michael
Top
#17
Hallo!

Die Print-Anweisung gibt es für Anhänge nicht, daher läuft .Attachments(i).Print ins Leere. "On Error Resume Next" sollte man vermeiden wenn man Programmierfehler erkennen möchte.

Testen konnte ich nicht, da es unter Windows 10 anscheinend nicht richtig funktioniert, zumindest nicht mit PDF-Dateien.

Public Sub PrintPDFFile()

 Dim oMailAttach As Outlook.Attachment
 Dim oMailItem   As Outlook.MailItem

 Select Case True
        Case TypeOf Application.ActiveWindow Is Outlook.Inspector
             Set oMailItem = Application.ActiveInspector.CurrentItem
        Case Else
             With Application.ActiveExplorer.Selection
                  If .Count Then Set oMailItem = .Item(1)
             End With
        If oMailItem Is Nothing Then Exit Sub
 End Select

      
  For i = 1 To oMailItem.Attachments.Count
      ShellExecute 0, "print", oMailItem.Attachments(i).Filename, vbNullString, vbNullString, 0
  Next i

End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Gruß, René
Top
#18
Hallo Rene,


da bekomme ich immer eine Fehlermeldung:

Sub oder Function nicht definiert!
Betrifft "Shellexecute"!?

DAnke
VG
Alexandra
Top
#19
Hi schau dir mal in meknem Hinweis in dem Beitrag bei Herber den Code an.  Da hat Rene in seinem Posting etwas ausgelassen.
Mit freundlichen Grüßen  :)
Michael
Top
#20
Hallo Rene, Hallo Michael,


so nun funktioniert es wie gewünscht! :)
Code:
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
Sub Anlagen_Drucken()
Dim strPath As String
Dim objMail As MailItem
Dim intAnlagen As Integer, i As Integer
Dim sFile As String
On Error Resume Next
'Pfad zu meinem Ordner
strPath = "C:\Anlagen"
'Schleife
For Each objMail In Outlook.ActiveExplorer.Selection
With objMail
'Mails auf vorh. Anlagen prüfen
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
'Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & "\" & .Attachments.Item(i).FileName
sFile = strPath & "\" & .Attachments.Item(i).FileName
ShellExecute 0, "print", sFile, vbNullString, vbNullString, 0
Next i
'Mails löschen
'objMail.Delete
End If
End With
Next objMail
End Sub
Macht genau das was es soll!
Kann mir jemand diesen Teil hier erklären:
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


Vielen Dank
VG
Alexandra
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste