Ik gebruik een macro om PDF bijlagen in een bepaalde Outlook 2003 map op de slaan en uit te printen. De verwerkte mails worden verwijderd.
Helaas werkt de macro niet goed: alleen de eerste helft van de mailtjes worden verwerkt. Ik moet de macro dus een paar keer herhalen.
Bijv. de eerste 8 van 16, dan de eerste 4 van 8, dan de eerste 2 van 4, enz.
Waar zit de fout in deze macro?
Helaas werkt de macro niet goed: alleen de eerste helft van de mailtjes worden verwerkt. Ik moet de macro dus een paar keer herhalen.
Bijv. de eerste 8 van 16, dan de eerste 4 van 8, dan de eerste 2 van 4, enz.
Waar zit de fout in deze macro?
Sub BijlagenOpslaanPrinten()
'Deze macro controleert een voorgedefinieerde subfolder in Outlook op Attachments en slaat die met PDF-extensie op in een voorgedefinieerde map.
'De opgeslagen bestanden kunnen bekeken worden in Internet Explorer.
'De opgeslagen bestanden worden afgedrukt op de standaardprinter.
' Afvangen van fouten
On Error GoTo SaveAttachmentsToFolder_err
' Variabelen declareren
Dim ns As NameSpace
Dim Inbox As MAPIFolder
Dim SubFolder As MAPIFolder
Dim Item As Object
Dim Atmt As Attachment
Dim FileName As String
Dim i As Integer
Dim varResponse As VbMsgBoxResult
Set ns = GetNamespace("MAPI")
Set Inbox = ns.GetDefaultFolder(olFolderInbox)
Set SubFolder = Inbox.Folders("mail-met-bijlagen") 'GEEF HIER DE NAAM VAN DE SUBFOLDER IN OUTLOOK AAN.
i = 0
' Controleer de Subfolder op Attachments en sluit af als er niets gevonden wordt.
If SubFolder.Items.Count = 0 Then
MsgBox "Er zijn geen berichten met Attachments in de Subfolder mail-met-bijlagen.", vbInformation, _
"Niets gevonden"
Exit Sub
End If
' Controleer elk bericht op Attachments
For Each Item In SubFolder.Items
For Each Atmt In Item.Attachments
' Controleer de filenaam van elke Attachment and sla die met "pdf" extensie op in voorgedefineerde map.
If Right(Atmt.FileName, 3) = "pdf" Then
FileName = "D:\bijlagen\" & Atmt.FileName
Atmt.SaveAsFile FileName
i = i + 1
'document printen
Shell """C:\Program Files\Adobe\Reader 9.0\Reader\acrord32.exe"" /h /p """ + FileName + """", vbHide
End If
Next Atmt
'remove next line if you don’t want the email be deleted automatically
Item.Delete
Next Item
' Laat een totaal van berichten zien
If i > 0 Then
varResponse = MsgBox("I found " & i & " attached files." _
& vbCrLf & "I have saved them into the D:\bijlagen\" _
& vbCrLf & vbCrLf & "Would you like to view the files now?" _
, vbQuestion + vbYesNo, "Finished!")
' Open Windows Explorer om de opgeslagen bestanden te laten zien.
If varResponse = vbYes Then
Shell "Explorer.exe /e,D:\bijlagen\", vbNormalFocus
End If
Else
MsgBox "I didn't find any attached files in your mail.", vbInformation, "Finished!"
End If
' Maak het geheugen leeg
SaveAttachmentsToFolder_exit:
Set Atmt = Nothing
Set Item = Nothing
Set ns = Nothing
Exit Sub
' Foutverwerking
SaveAttachmentsToFolder_err:
MsgBox "Er is een fout opgetreden." _
& vbCrLf & "Rapporteer de volgende fout." _
& vbCrLf & "Macro Naam: SaveAttachmentsToFolder()" _
& vbCrLf & "Error Number: " & Err.Number _
& vbCrLf & "Error Description: " & Err.Description _
, vbCritical, "Error!"
Resume SaveAttachmentsToFolder_exit
End Sub