AddressEntries
对象是对象的集合AddressEntry
。
当您按原样直接索引到AddressEntries
集合中时,您会根据提供的参数返回单个对象。 该参数可以是索引号,也可以是项目的默认属性。AddressEntry
Index
Index
由于AddressEntry
项目的默认属性是.Name
属性,因此返回集合中与该.Name
属性匹配的第一个项目。
如果要返回AddressEntry
集合中与属性匹配的所有对象,.Name
则需要遍历集合。
现在,在 .Net 中,您可以使用 迭代集合For...Next
,我相信您也可以在 VBA 中执行此操作,但我无法立即回忆。例如:
Set olApp = CreateObject("Outlook.Application")
Set myNamespace = olApp.GetNamespace("MAPI")
Set aList = myNamespace.AddressLists.Item("Global Address List")
Set aEntries = aList.AddressEntries
For each aEntry in aEntries
if aEntry.Name="" + ExchangeName + "" Then
'Do something with aEntry object
End If
Next
如果由于某种原因不起作用,您可以使用GetFirst
andGetNext
方法遍历集合。
例如:
Set olApp = CreateObject("Outlook.Application")
Set myNamespace = olApp.GetNamespace("MAPI")
Set aList = myNamespace.AddressLists.Item("Global Address List")
Set aEntries = aList.AddressEntries
Set aEntry = aEntries.GetFirst
Do While Not aEntry is Nothing
if aEntry.Name="" + ExchangeName + "" Then
'Do something with aEntry object
End If
Set aEntry = aEntries.GetNext
Loop
至于按字母顺序排序,请查看Sort Method。
就构建功能而言
...我会看到以我输入的字符串开头的所有匹配项。
我不确定你想如何“呈现”匹配项,或者你想在哪里输入字符串。但一般的想法是创建一个接受输入参数(例如"MatchName" As String
)的函数并执行像上面这样的循环以查找该字符串上您想要查看的任何属性的所有匹配项,然后您将返回一个数组或其他内容您可以使用它来“呈现”信息。
如果您想让它动态化,以便“在您键入时”更新列表,您可以从KeyPress
事件中运行更新过程。为了在键入单词时不遍历整个集合,您可能希望存储数组,然后在键入每个附加字母时,您可以遍历该数组并删除不匹配项(缩小结果)。在此之前,您可能需要进行某种检查以查看是否删除了一个字母(例如检查文本框中字符串的长度),这会告诉您的程序重新运行对AddressEntries
集合的检查(扩大结果)。
无论如何,这是你可以做到的一种方式的一般想法。