Clever-Excel-Forum

Normale Version: Makro kopiert nicht in Zielordner
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo VBA Spezialisten,

ich habe da ein kleines Problem (hoffentlich). Das nachfolgende Makro funktioniert soweit, mit Ausnahme zweier Probleme:

  1. Das Makro kopiert die Anhänge nicht in den vorgesehenen Ordner C:/Attachments, sonder meist in den Dokumente Ordner, kann aber auch passieren, dass er sie auf dem Desktop, oder in willkürlich anderen Ordnern ablegt.
  2. Er löscht die Anhänge am Schluss nicht aus dem Ordner in die er sie kopiert hat.
Vielen Dank im Voraus schon für Eure Hilfe.

Hier das Makro:

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

Public Sub PrintSelectedAttachments()
 Dim Exp As Outlook.Explorer
 Dim Sel As Outlook.Selection
 Dim obj As Object
 Set Exp = Application.ActiveExplorer
 Set Sel = Exp.Selection
 For Each obj In Sel
   If TypeOf obj Is Outlook.MailItem Then
     PrintAttachments obj
   End If
 Next
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 = "C:\Attachments"

 Set colAtts = oMail.Attachments

 If colAtts.Count Then
   For Each oAtt In colAtts

     sFileType = LCase$(Right$(oAtt.FileName, 4))

     Select Case sFileType
     Case ".xls", ".doc", ".pdf"
       sFile = ATTACHMENT_DIRECTORY & oAtt.FileName
       oAtt.SaveAsFile sFile
       ShellExecute 0, "print", sFile, vbNullString, vbNullString, 0
     End Select
   Next
 End If
End Sub
Hallöchen,

erst mal zu 1)

Eventuell wäre es angebracht, beim Speichern statt ATTACHMENT_DIRECTORY die von Dir zur Pfaddefinition verwendete Variable sDirectory zu nehmen :21:
...wenn ich ATTACHMENT_DIRECTORY durch sDirectory ersetze passiert gar nichts. Makro wird nicht mehr ausgeführt.
Hallo!

Entferne mal "On Error Resume Next". Dann werden Fehler angezeigt. Bei "sDirectory" fehlt ein Backslash. sDirectory = "C:\Attachments\"

Gruß, René
Super vielen Dank!

Das war der Fehler! Der Backslash hat gefehlt.

Vielen vielen DANK an Euch!!!!
...jetzt ist nur noch die 2. Frage offen: Wie kann ich die kopierten PDF´s im Ordner Attachments am Schluss automatisch wieder löschen?
Kill sDirectory & oAtt.FileName
DANKE...sagst Du mir noch wo genau ich das platzieren muss?
Nach dem Druckbefehl. Allerdings mit einer Wartezeit, damit genug Zeit bleibt um den Druck anzustoßen.
Besten Dank für Deine Antwort.

Ich möchte aber nicht jede einzelen Datei nach dem drucken löschen, sondern erst wenn alle Dateien in dem Attachments Ornder gedruckt sind. Dann alle löschen.

Hast Du da eine Idee?

DANKE !!