2013-03-20 2 views
1

아래 코드를 사용하여 전체 주소록 창을 열어 목록에서 연락처를 선택합니다.Outlook 주소 목록에서 관리자 정보 가져 오기

연락처가 선택되어 있으면 관리자 이름도 받고 싶습니다. 그러나, 나는 그것이 작동하도록 할 수 없습니다.

어떤 권장 사항이 있습니까?

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' 속성이 있습니다. 이게 니가 찾고있는거야? –

+0

이것은 Exchange 서버에 있습니다. 로컬로 호스팅되는 연락처 정보가 없습니다 ... 여전히 작동합니까? 귀하의 예를 어떻게 구현합니까? (코드) – maxgohan

+0

코드에서 'objAE'의 객체 유형은 무엇입니까? 이것을 찾으려면'Debug.Print TypeName (objAE)'를 실행하십시오. ContactItem 인 경우 objAE.ManagerName 속성을 사용하여 Manager의 이름을 가져와야합니다. –

답변

0

나는 그것을 알아낼 수있었습니다!

은 수신자 개체를 주소 개체로 변환하고 거기에서 관리자 정보를 가져와야합니다. 도 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와 객체 (는 CDO 1.21 라이브러리의 완전한 교체를 제공하며, Outlook 및 MAPI의 독립 실행 형 버전에서 모두 실행할 수) 자사의 RDO 설정을 사용할 수 있습니다 -을 RDOAddressEntry.Manager 속성을 제공합니다.

+0

제안을 주셔서 감사하지만이 엑셀 시트는 1 명 이상의 사람에 의해 사용되며 나는 모든 PC에 라이브러리를 설치할 수있게 될 거라 생각하지 않아 .... 사용할 수 있습니다 .... – maxgohan

관련 문제