2017-04-19 1 views
1

Y at-il de toute façon à la boîte de recherche d'adresses Outlook pour un contact en utilisant leur adresse e-mail sans aucune sorte de boucles For? Il y a tellement de contacts dans notre liste de contacts internationaux et il faut une éternité pour parcourir la liste. N'existe-t-il aucune fonction de recherche ou de recherche pouvant être appliquée à la liste de contacts.Carnet d'adresses Outlook Recherche (No Looping?)

Je cherche à obtenir des informations comme le numéro de téléphone et le bureau de l'utilisateur s'ils se trouvent dans la liste de contacts.

Toutes les solutions que j'ai trouvé impliquent une boucle dans la liste des contacts. http://www.ozgrid.com/forum/showthread.php?t=76588

https://msdn.microsoft.com/en-us/library/office/ff869721.aspx

Répondre

0

Utilisez Namespace.CreateRecipient/Recipient.Resolve pour résoudre le nom (ou l'adresse) dans le carnet d'adresses. Même si vous transmettez une adresse SMTP, elle sera résolue à un utilisateur de la liste d'adresses globale (s'il existe une correspondance).

+0

Dmitry, je suppose que j'ai manqué de placer ceci dans la question originale. J'ai l'email de l'utilisateur, et je veux le trouver dans le carnet d'adresses. Puis obtenir des informations telles que le numéro de téléphone et le bureau (mis à jour le poste principal). Je ne sais pas si je peux extraire des informations en plus du nom de outlook.recipient. –

+0

Bien sûr, vous pouvez utiliser Recipient.AddressEntry. De là, vous pouvez utiliser AddressEntry.GetExchangeUser ou AddressEntry.PropertyAccessor.GetProperty pour lire une propriété MAPI (utiliser OutlookSpy pour voir ce qui est disponible). –

+0

Merci. C'est génial. Cela devrait fonctionner pour ce dont j'ai besoin. Va poster le code une fois que j'en ai fini avec. –

0

C'est la solution que j'utilise pour obtenir le téléphone # d'un contact avec l'adresse e-mail du carnet d'adresses global - en utilisant Dmitry approche Streblechenko.

Sub GetPhone(EmailAddress As String) 'Gets the phone # for contact 
Dim OutApp As Outlook.Application 
Dim OutMail As Object 
Dim OutRecipients As Outlook.Recipient 
Dim PhoNe As String 


On Error Resume Next 
Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 

Set OutRecipients = OutMail.Recipients.Add(EmailAddress) 
OutRecipients.Resolve 

PhoNe = OutRecipients.AddressEntry.GetExchangeUser.BusinessTelephoneNumber 
Set OutRecipients = Nothing 
Set OutMail = Nothing 
Set OutApp = Nothing 
On Error GoTo 0 
End Sub 
+0

Il n'y a absolument aucune raison de créer un email fictif. Utilisez Namespace.CreateRecipient/Recipient.Resolve. –

+0

Essayé en utilisant Namespace.CreateRecipient mais a couru dans une erreur et je n'ai pas eu le temps de le divertir. J'avais besoin d'une macro fonctionnelle très rapide. J'ai déjà utilisé la résolution de destinataires avec des courriels, c'est pourquoi j'ai choisi cette voie. Quand j'ai une chance, je vais essayer à nouveau avec Namespace.CreateRecipient. –