Bonjour,
Je souhaite récupérer toutes les piéces jointes d'une selection de messages. Pour cela j'ai récupéré quelques lignes de codes (ci-dessous) afin de faire une macro VBA.
Cela marche partiellement car si je selectionne 200 messages avec chacun une piéce jointe je n'aurai que 90 fichiers enregistrés dans mon repertoire.
ex:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection
Set myOlExp = myOlApp.ActiveExplorer
Set myOlSel = myOlExp.Selection
/* MyOlsel.count contient 200 éléments */
For i = 1 To myOlSel.Count
If myOlSel.Item(i).Attachments.Count > 0 Then
myOlSel.Item(i).Attachments.Item(1).SaveAsFile "C:\" & i & "name.jpg"
End If
Next |
Pourtant si je rajoute l'index manuellement et non pas dans une boucle alors il est bien écrit.
ex:
myOlSel.Item(197).Attachments.Item(1).SaveAsFile "C:\test\" & "197" & "name.jpg"
Et ensuite si je relance l'extraction des piéces jointes en enlevant la partie avec l'index manuel (et bien entendu j'ai effacé mon repertoire destination avant) j'aurai bien mes 90 fichiers du départ et par contre le fichier 197name.jpg d'écrit aussi mais toujours pas le reste. je précise que le fichier 197name.jpg correspond bien à la piéce jointe de mon 197 iéme mail de ma sélection. et pareil pour les 90 premiers. La boucle parcours biens 200 éléments avec à chaque fois le bon Item(i).Attachments.
Je pense à un problème de sécurité mais j'ai beau désactiver les sécurités dans outlook, globalement à XP je ne trouve pas. je n'ais plus d'idée. Je ne sais pas comment debuger ou avoir des infos sur le retour de la fonction SaveAsFile.
Je suis avec outlook 2003 et VBA 6.5.
Merci bien pour toutes idées éventuelle.
Partager