J'ai écrit un script qui crée une version PDF d'un email, cette version ci-dessous s'assure qu'un email n'a pas de pièce jointe (la version avec pièce jointe se comporte exactement de la même manière, soit dit en passant). Il fonctionne en douceur et sans aucun problème jusqu'à ce qu'il atteigne 65-ish email, puis il arrête avec cette erreur:Pourquoi ce script s'arrête-t-il après la création du fichier PDF 66-ish?
Run-Time error '-2147467259 (80004005)'
Toute idée pourquoi cela pourrait se produire?
Voici mon code:
Sub PrintEmails()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim myItem As Object, myItems As Object, objDoc As Object, objInspector As Object
Dim FolderPath As String
Dim FileNumber As Long
FileNumber = 2
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox).Folders("NewEmails")
Set myItems = olFolder.Items
FolderPath = "F:\MyFolder\VBA\Emails\"
For Each myItem In myItems
If myItem.Attachments.Count = 0 Then
FileName = myItem.Subject
IllegalCharacters = Array("/", "\", ":", "?", "<", ">", "|", "&", "%", "*", "{", "}", "[", "]", "!")
For Each Character In IllegalCharacters
FileName = Replace(FileName, Character, " ")
Next Character
Do While FileOrDirExists(FolderPath & FileName & "(" & CStr(FileNumber) & ")" & ".pdf")
FileNumber = FileNumber + 1
Loop
If FileOrDirExists(FolderPath & FileName & ".pdf") Then
Set objInspector = myItem.GetInspector
Set objDoc = objInspector.WordEditor
objDoc.ExportAsFixedFormat FolderPath & FileName & "(" & CStr(FileNumber) & ")" & ".pdf", 17
Set objInspector = Nothing
Set objDoc = Nothing
FileNumber = FileNumber + 1
Else
Set objInspector = myItem.GetInspector
Set objDoc = objInspector.WordEditor
objDoc.ExportAsFixedFormat FolderPath & FileName & ".pdf", 17
Set objInspector = Nothing
Set objDoc = Nothing
End If
Else
End If
Next myItem
End Sub
Function FileOrDirExists(PathName As String) As Boolean
Dim iTemp As Integer
'Ignore errors to allow for error evaluation
On Error Resume Next
iTemp = GetAttr(PathName)
'Check if error exists and set response appropriately
Select Case Err.Number
Case Is = 0
FileOrDirExists = True
Case Else
FileOrDirExists = False
End Select
'Resume error checking
On Error GoTo 0
End Function
Merci pour votre aide!
Votre boîte de réception contient-elle * seulement * des éléments de courrier ou d'autres types d'éléments? Si vous voulez seulement traiter des mails, ajoutez une vérification pour le type 'myItem'. Quelle ligne renvoie l'erreur? –
Oui, cette boîte de réception contient uniquement des éléments de courrier, et la ligne qui génère une erreur est la suivante: 'Set objInspector = myItem.GetInspector' juste après le' If FileOrDirExists (FolderPath & FileName & ".pdf") Then' – hod
voir le même problème si vous ne touchez pas l'inspecteur et l'éditeur de Word dans la boucle? –