Ceci est ma première question sur StackExchange jamais :-) Je suis en cours d'exécution le script suivant dans MS Outlook VBAComment puis-je faire mon script VBA d'Outlook plus efficace
Sub export()
On Error resume Next
Dim Ns As Outlook.NameSpace
Dim eitem
Dim oFile As Object
Dim fso As Object
Set Ns = Application.GetNamespace("MAPI")
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.CreateTextFile("C:\Users\chakkalakka\Desktop\mails.txt")
'Code
For Each eitem In Ns.Session.Folders.Item(12).Items
oFile.WriteLine eitem.SenderName & "§" & eitem.SentOnBehalfOfName & "§" & eitem.ReceivedTime
Next
oFile.Close
Set Ns = Nothing
Set fso = Nothing
Set oFile = Nothing
Debug.Print "Completed!"
End Sub
Le script en général fonctionne bien et la sortie est correcte. Mon problème est le suivant: J'ai besoin d'exécuter ceci dans un dossier avec> 95000 articles et cela prend des âges.
Alors ma question est: Que puis-je faire pour améliorer les performances?
Merci d'avance pour votre aide
Combien de temps cela prend-il réellement? Veuillez enlever la partie 'On Error resume Next' pour voir s'il y a des erreurs causant du retard. Si oui, publiez les messages d'erreur ici. –
Affectez la collection 'Items' à une variable locale. Cela évite de réévaluer la chaîne d'objets complète dans la boucle 'For Each'. –
On Error Resume Next ne doit être utilisé que s'il existe un but spécifique pour contourner une erreur, puis désactivé avec On Error GoTo 0. Voir http://stackoverflow.com/questions/31753201/vba-how-long-does- on-error-resume-next-work/31753321 # 31753321 et http://stackoverflow.com/questions/29390673/error-handling-in-vba-on-error-resume-next/29390944#29390944 – niton