从Outlook地址列表vba获取管理器信息



我使用下面的代码打开全局地址列表窗口,以在列表中选择联系人。

对于选中的联系人,我还想获得Manager的名称。然而,我似乎不能使它工作。

建议吗?

Private Sub accountManagerName_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim CDOSession, cdoAddressBook, olkRecipients, objAE
    On Error Resume Next
    Set CDOSession = CreateObject("MAPI.Session")
'   Change the name of your Outlook profile as needed.
    CDOSession.Logon "", "", False, False
    Set olkRecipients = CDOSession.AddressBook(, "Global Address List", 0, False)
    For Each objAE In olkRecipients
        accountManagerName.Text = objAE.name
        'ccManager.Caption = objAE.Manager.name
    Next
    Set olkRecipients = Nothing
    CDOSession.Logoff
    Set CDOSession = Nothing
End Sub

我能算出来!

只需要将收件人对象转换为addressentry对象并从中提取管理器信息,这也可以通过使用objAE.addressEntry.Manager来完成!

Private Sub accountManagerName_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
    On Error Resume Next
    Set CDOSession = CreateObject("MAPI.Session")
'   Change the name of your Outlook profile as needed.
    CDOSession.Logon "", "", False, False
        If Err.Number <> 0 Then MsgBox "Please ensure you have Outlook open.", , "ERROR"
    Set olkRecipients = CDOSession.AddressBook(, "Select Account Manager", 0, False)
    For Each objAE In olkRecipients
        accountManagerName.Text = objAE.name
        AMfullName = objAE.name
        'convert Recipient object to AddressEntry object using the recipient ID
        Set objAE2 = CDOSession.GetAddressEntry(objAE.ID)
        AMfirstName = objAE2.fields(18)
        AMlastName = objAE2.fields(22)
        AMmanagerName = objAE2.Manager
'        Debug.Print AMfirstName
'        Debug.Print AMlastName
'        Debug.Print AMmanagerName
    Next
    ccAMmanager.Caption = AMmanagerName
    ccUserManager.Caption = getName("mgrname")
    ccAMmanager.Activate
    Set olkRecipients = Nothing
    CDOSession.Logoff
    Set CDOSession = Nothing

End Sub

对于Outlook对象模型,使用AddressEntry。经理的财产。

CDO 1.21没有公开地址条目的管理器,但是你可以使用Redemption(我是它的作者)和它的RDO对象家族(它提供了一个完整的CDO 1.21库的替代品,可以在Outlook和MAPI的独立版本下运行)——它公开了RDOAddressEntry。经理的财产。

最新更新