Clever-Excel-Forum

Normale Version: Outlook VBA - Alle Anhänge drucken!
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
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.
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
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
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
Hallo Michael,


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


Danke
Alexandra
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
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é
Hallo Rene,


da bekomme ich immer eine Fehlermeldung:

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

DAnke
VG
Alexandra
Hi schau dir mal in meknem Hinweis in dem Beitrag bei Herber den Code an.  Da hat Rene in seinem Posting etwas ausgelassen.
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
Seiten: 1 2 3