2016-02-05 8 views
6

को हल करते समय एकाधिक प्रविष्टियों की पहली प्रविष्टि का चयन करना मेरे पास एक ऐसा कार्य है जो नाम लेता है और चयनित नाम के लिए उपनाम को वापस करने के लिए Outlook में इसे हल करता है। यह पता चलता है जब पता पुस्तिका में चयनित नाम के लिए एक से अधिक प्रविष्टियां होती हैं। जैसे "स्मिथ, बॉब" & "स्मिथ, बॉब एक्स"। यदि मैं जिस नाम को हल करने का प्रयास करता हूं वह है "स्मिथ, बॉब एक्स", कोड ठीक काम करता है, लेकिन सादा "स्मिथ, बॉब" विफल रहता है।Outlook प्राप्तकर्ता

मुझे लगता है कि एकाधिक प्रविष्टियां कब मिलती हैं, Outlook चेक नाम संवाद खोलता है (यह तब होता है जब मैं मैन्युअल रूप से नाम हल करता हूं)।

जब मेरे कोड को एकाधिक प्रविष्टियां मिलती हैं, तो मैं पहले का चयन कैसे करूं?

Function GETTPX(ByVal UserName As String) As String 
Dim objOL As Object 
Dim oRecip As Outlook.Recipient 
Dim oEU As Outlook.ExchangeUser 
Dim oEDL As Outlook.ExchangeDistributionList 

Set objOL = CreateObject("Outlook.Application") 

Set oRecip = objOL.Session.CreateRecipient(UserName) 
oRecip.Resolve 
If oRecip.Resolved Then 
    Set oEU = oRecip.AddressEntry.GetExchangeUser 
End If 
GETTPX = oEU.Alias 

Set oRecip = Nothing 
Set objOL = Nothing 

End Function 

उत्तर

1

विस्तारित MAPI स्तर पर (सी ++ या डेल्फी केवल) आप (जैसे GAL) के रूप में एक विशेष खोज कंटेनर की सामग्री को मेज पर एक PR_ANR प्रतिबंध बना सकते हैं। जब Outlook संपादित करने के लिए आपके द्वारा टाइप किए गए नाम को हल करता है तो यह Outlook करता है - यह खोज पथ में सभी कंटेनरों के माध्यम से जाता है और PR_ANR प्रतिबंध लागू करता है। यदि कई मिलान मिलते हैं, तो यह सूची के साथ एक संवाद बॉक्स प्रदर्शित करता है। यदि कोई एकल मैच है, तो यह वापस कर दिया जाता है और खोज बंद हो जाती है, अन्यथा यह खोज पथ में अगले कंटेनर पर जारी रहता है।

आउटलुक ऑब्जेक्ट मॉडल हालांकि इस कार्यक्षमता का खुलासा नहीं करता है। यदि Redemption (कोई भी भाषा) का उपयोग करना एक विकल्प है, तो यह RDOAddressBook का खुलासा करता है। ResolveNameEx और RDOAddressList। ResolveNameEx, जो मैचों की एक सूची लौटाता है।

set Session = CreateObject("Redemption.RDOSession") 
    Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
    set AdrrEntries = Session.AddressBook.ResolveNameEx("john") 
    Debug.Print AdrrEntries.Count & " names were retruned by ResolveNameEx:" 
    Debug.Print "------------" 
    for each AE in AdrrEntries 
    Debug.Print AE.Name 
    next 
    Debug.Print "------------" 
+0

मैं एक काम कंप्यूटर का उपयोग कर रहा हूं इसलिए कुछ भी डाउनलोड करने से मुझे कोई डर नहीं होगा। तो मुझे लगता है कि यह ऐसा कुछ नहीं है जिसे मैं केवल वीबीए के साथ प्राप्त कर सकता हूं? – StevenWalker

+0

यह सही है। –

संबंधित मुद्दे