J'essaye d'obtenir des détails pour des utilisateurs dans une liste de distribution (contenant ~ 200 personnes). Lorsque je crée un nouvel e-mail, ajoutez ce DL comme seul destinataire et exécutez la macro ci-dessous, il renvoie ~ 15 premiers résultats, puis le message "Outlook tente d'extraire des données du serveur Microsoft Exchange" s'affiche. un certain temps je reçois l'erreur "L'opération a échoué".Outlook - détails de membre de liste de distribution
Si je continue l'exécution du code, les valeurs ~ 15 suivantes sont renvoyées et ce problème réapparaît. Coutures comme il y a une limite anti-spam Exchange.
Sub GetDetails(olMail As MailItem)
Dim i As Integer, j As Integer
For i = 1 To olMail.Recipients.Count ' count = 1
If olMail.Recipients.Item(i).AddressEntry.GetExchangeUser Is Nothing Then
For j = 1 To olMail.Recipients.Item(i).AddressEntry.Members.Count ' count ~= 200
Debug.Print olMail.Recipients.Item(i).AddressEntry.Members.Item(j).GetExchangeUser.FirstName
Next j
End If
Next i
End Sub
Mais si j'Allonger la liste de distribution (en utilisant l'icône « + ») et exécuter du code légèrement modifié, les résultats pour tous les utilisateurs sont retournés sans problème (en prenant quelques secondes seulement).
Sub GetDetails(olMail As MailItem)
Dim i As Integer
For i = 1 To olMail.Recipients.Count ' count ~= 200
If Not olMail.Recipients.Item(i).AddressEntry.GetExchangeUser Is Nothing Then
Debug.Print olMail.Recipients.Item(i).AddressEntry.GetExchangeUser.FirstName
End If
Next i
End Sub
Des idées?
est-il quelqu'un sur la liste de distribution qui n'est pas un ExchangeUser? Votre deuxième extrait compte pour cela, mais il semble que le premier ne le fasse pas (il gère le 'Recipients.Item (1)' mais * pas * les destinataires individuels). (Ceci est juste une photo dans le noir, et je n'ai pas d'autres idées) –
Tous les utilisateurs sont des visiteurs d'échange. Le problème est que je ne sais pas comment les parcourir à travers les destinataires individuels. –
une pensée serait d'ajouter un appel à la fonction WinAPI Sleep pendant 100 ou 200 ms. l'erreur que vous obtenez ressemble à une sorte de conflit/délai d'attente que vous pourriez éviter avec une très petite pause à chaque itération. –