2013-03-20 59 views
1

我正在使用以下代碼打開全局地址列表窗口以在列表中選擇一個聯繫人。從Outlook地址列表中獲取管理器信息vba

對於選定的聯繫人,我也想獲取經理姓名。但是,我似乎無法讓它工作。

有什麼建議嗎?

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 
+0

'ContactItem'對象中有'ManagerName'屬性。這是你在找什麼? – 2013-03-20 19:43:13

+0

這是在交換服務器上,我沒有任何聯繫信息在本地託管......這仍然有效嗎?我將如何實施你的例子? (code) – maxgohan 2013-03-20 20:02:01

+0

代碼中objAE的對象類型是什麼?運行'Debug.Print TypeName(objAE)'來找到它。如果它是一個ContactItem,那麼你只需要使用objAE.ManagerName屬性來獲取管理者的名字。 – 2013-03-20 20:32:15

回答

0

我能弄明白!

只是必須將收件人對象轉換爲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 
0

對於Outlook對象模型,請使用AddressEntry.Manager屬性。

CDO 1.21不公開的地址條目的經理,但你可以使用Redemption及其RDO組對象(它提供了一個完整的更換CDO 1.21庫,並可以Outlook和MAPI的獨立版本下運行兩種) - 它揭示了RDOAddressEntry.Manager屬性。

+0

感謝您的建議,但這個Excel表將被超過1人使用,我不認爲我會被允許在所有的PC上安裝圖書館.... – maxgohan 2013-03-21 13:44:43