2013-10-06 4 views
1

Есть ли способ извлечь данные в этом диалоговом окне через VBA?Извлечь данные объекта AddressEntry для пользователя Exchange

Details Dialog Box http://i.msdn.microsoft.com/dynimg/IC84336.gif

мне нужно, особенно содержание на вкладке E-Mail.

+0

Очень поздно, но если вы не нашли решение, вы можете работать с объектом 'AddressEntry.GetExchangeUser', который должен содержать большую часть этой информации. См. [Здесь] (http://stackoverflow.com/a/23668368/1467082) для примера. –

ответ

0

Конечно, используйте AddressEntry.PropertyAccessor.GetProperty.

имен свойств DASL можно получить с помощью OutlookSpy: либо нажмите кнопку IAddrBook, чтобы перейти к конкретной записи адреса или, у вас есть сообщение адрес для одного из получателей GAL, нажмите кнопку IMessage, перейдите на вкладку GetRecipientTable, дважды щелкните один из получателей.

1

я есть пойти функцию чтения адресной книги:

Function Get_mail(Absender As String) 
Dim OutApp As Outlook.Application 
Dim OutTI As Outlook.TaskItem 
Dim OutRec As Outlook.Recipient 

    Set OutApp = New Outlook.Application 
    Set OutTI = OutApp.CreateItem(3) 
    OutTI.Assign 

    Set OutRec = OutTI.Recipients.Add(Absender) 
    OutRec.Resolve 

    If OutRec.Resolved Then 
    On Error GoTo exit_function 
     Get_mail = OutRec.AddressEntry.GetExchangeUser.PrimarySmtpAddress 
    End If 
exit_function: Exit Function 
    Set OutApp = Nothing 
    Set OutTI = Nothing 
End Function 

, насколько я знаю, вы можете только читать из первичного Mail-адрес из-вкладки почты адреса; чтобы увидеть, что еще есть, удалить часть «.PrimarySmtpAddress», указать точку, и вы должны получить список других свойств.

Я уверен, что вам нужна ссылка на библиотеку объектов Microsoft Outlook 14.0.

Ввод «Абсендер» может быть любой строкой. если эту строку можно разрешить как запись в адресной книге в Outlook-почте, у вас также будет положительный результат из приведенного выше кода. Для вызова функции, если, например, у вас есть строка «mail_adress_from_adressbook» вы бы поставил:

mail_adress_from_adressbook = get_mail("Joe Smith") 

Я надеюсь, что это помогает, Max

1

Вы можете в значительной степени получить поля легко, Е- адрес электронной почты является более сложной. Список литературы: Microsoft Exchange Property Tags

Этот код экспортирует некоторые данные, но, самое главное, адреса электронной почты в текстовый файл.

Sub ListGAL() 
    On Error Resume Next 
    Const LogFile = "C:\Test\OLK_GAL.log" 
    Const sSCHEMA = "http://schemas.microsoft.com/mapi/proptag/0x" 
    Const PR_EMS_AB_PROXY_ADDRESSES = &H800F101E 

    Dim oNameSpace As NameSpace, oGAL As AddressList, oEntry As AddressEntry 
    Dim oFSO As Variant, oLF As Variant, oExUser As ExchangeUser, i As Long 

    ' Oulook objects 
    Set oNameSpace = Outlook.Application.GetNamespace("MAPI") 
    ' Global Address List object 
    Set oGAL = oNameSpace.AddressLists("Global Address List") 
    '---------- 
    ' Log file objects 
    Set oFSO = CreateObject("Scripting.FileSystemObject") 
    Set oLF = oFSO.CreateTextFile(LogFile) 
    '---------- 
    For Each oEntry In oGAL.AddressEntries 
     i = i + 1 
     Debug.Print i & vbTab & oEntry.Name 
     If oEntry.AddressEntryUserType = olExchangeUserAddressEntry Then 
      oLF.WriteLine "Entry " & i & " (olExchangeUserAddressEntry)" 
      oLF.WriteLine "Name: " & oEntry.Name 
      oLF.WriteLine "Address: " & oEntry.Address 
      Set oExUser = oEntry.GetExchangeUser 
      ' SMTP ADDRESSES 
      oLF.WriteLine "SMTP Addresses:" 
      oLF.WriteLine vbTab & Join(oExUser.PropertyAccessor.GetProperty(sSCHEMA & Hex(PR_EMS_AB_PROXY_ADDRESSES)), vbCrLf & vbTab) 
      Set oExUser = Nothing 
      oLF.WriteLine String(50, Chr(151)) ' Separator 
     End If 
    Next 
    '---------- 
    ' Close Log File, clean up 
    oLF.Close 
    Set oGAL = Nothing 
    Set oNameSpace = Nothing 
    Set oLF = Nothing 
    Set oFSO = Nothing 
End Sub 
Смежные вопросы