这会给你你想要的。
Private Function GetFullName(inAlias As String) As String
Dim olApp As Outlook.Application
Dim olNS As Outlook.Namespace
Dim olAdd As Outlook.AddressEntries
Dim olMem As Outlook.AddressEntry
Dim olLst As Outlook.AddressList
Dim olAlias As String
On Error Resume Next
Set olApp = New Outlook.Application
On Error GoTo 0
If olApp Is Nothing Then
GetFullName = "Source not available"
Exit Function
End If
Set olNS = olApp.GetNamespace("MAPI")
Set olLst = olNS.GetGlobalAddressList
Set olAdd = olLst.AddressEntries
For Each olMem In olAdd
On Error Resume Next
olAlias = olMem.GetExchangeUser.Alias
On Error GoTo 0
If olAlias = inAlias Then
GetFullName = olMem.GetExchangeUser.Name
Exit For
Else
GetFullName = "Invalid Alias"
End If
Next
Set olApp = Nothing: Set olNS = Nothing: Set olAdd = Nothing
End Function
缺点是如果您的 GAL 很大,这可能需要一段时间。
我将检查是否可以先将列表转储到数组中,然后从那里进行操作。
或者,如果有另一种方法可以使用其他方法通过别名获取名称。
但是现在,请先尝试从中学习。
这是一个函数,所以要将它放到您的文本框中,您可以简单地:
TextBox2 = GetFullname(TextBox1)
注意:
我故意声明了所有对象,您需要知道您正在处理的对象类型。我还使用了On Error Resume Next,因为AddressEntry
没有Alias
并且会给出错误。这是我现在能想到的最简单的解决方法。
要求:
您需要参考Microsoft Outlook xx.x Object Library
.
xx.x
取决于您机器中安装的 Outlook 版本。