Страницы: 1
RSS
Как выгрузить электронные адреса получателей из Outlook в Excel
 
Уважаемые коллеги!

Мне нужно выгрузить адреса получателей из папки Отправленные Outlook в файл Excel.
Написал следующий макрос:
Код
Sub main2() 'запускаем эту процедуру из Excel

    Dim olApp   As Object 'Outlook.Application
    Dim fldr    As Object 'Outlook.Folder
    
    Set olApp = CreateObject("Outlook.Application")
    
    'обрабатываем папку Отправленные
    PrintInCell ("Адресаты из папки Отправленные")
    Set fldr = olApp.Session.GetDefaultFolder(5)  '5 = olFolderSentMail

    For Each Item1 In fldr.Items
        'Выписываем адресатов
        If Item1.Class = 43 Then  'сообщения -  Class = 43
            str1 = Item1.To
            PrintInCell (str1)
            str1 = Item1.CC
            PrintInCell (str1)
            str1 = Item1.BCC
            PrintInCell (str1)
        End If
    Next

End Sub


Sub PrintInCell(val1 As String)
     'Пользовательская функция записи
    ActiveCell.Value = val1
    ActiveCell.Offset(1, 0).Range("A1").Select
End Sub


Все работает хорошо, но вместо электронного адреса часто выдаются ФИО получателя.
У атрибутов To, CC и BCC дочерних атрибутов нет.
Подскажите, пожалуйста, как выгрузить именно электронный адрес?
Ведь в системе электронный адрес имеется (см. скриншот в приложении). И выгрузка Файл - Импорт и экспорт также показывает и ФИО, и электронный адрес.
Как можно получить этот электронный адрес, зная ФИО?
 
Alex_Gur, Похоже путь Ваш в локальную адресную книгу лежит. Outlook подменяет адрес на имя. Соответвенно, вам нужно по имени извелекать E-Mail. Сам много лет с AB не работал, ничего не помню но может это пригодится
http://www.vbaexpress.com/kb/getarticle.php?kb_id=987

ну и кибер кросс
Изменено: БМВ - 29.01.2018 21:49:17
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Похоже путь Ваш в локальную адресную книгу лежит. Outlook подменяет адрес на имя. Соответвенно, вам нужно по имени извелекать E-Mail.
К сожалению, в папке Контакты у меня записано не так много адресов. Васи Пупкина там нет.
Адресная книга и Контакты в Outlook - это одно и то же?
Изменено: Alex_Gur - 29.01.2018 21:50:39
 
Цитата
Alex_Gur написал:
Адресная книга и Контакты в Outlook - это одно и то же
а вот у Outlook еще есть кэш и Suggested Contacts (Предлагаемые контакты) . Возможно от туда попадают. Чтоб проверить начните набирать в TO имя и при появлении можно удалить нажав на крест рядом со значением. Ну и смотреть к чему приведет.
По вопросам из тем форума, личку не читаю.
 
Для получения адреса вместо  Item1.To используйте Item1.Recipients(Item1.To).Address.
Но сначала проверить, что Item1.To <> "" , конечно.
В начале кода желательно объявить переменную Dim Item1 As Object
Изменено: ZVI - 29.01.2018 23:45:00
 
ZVI, Где мои глаза были?... в Recipients заглянул а в Items1 нет :-( . Нажеюсь ТС  не осерчал что по ложному пути отправил.
По вопросам из тем форума, личку не читаю.
 
Большое спасибо, ZVI !  
Я тоже не обратил внимания на Recipients.
Теперь код получается такой (работает прекрасно!).

Код
Sub main2() 'запускаем эту процедуру в Excel

    Dim olApp   As Object 'Outlook.Application
    Dim fldr    As Object 'Outlook.Folder
    Dim Item1    As Object 'Сообщение
    Dim Recipient1    As Object 'Адресаты
    
    Set olApp = CreateObject("Outlook.Application")
    
'    'обрабатываем папку Контакты
'    PrintInCell ("Папка Контакты")
'    Set fldr = olApp.Session.GetDefaultFolder(10)  '10 = olFolderContacts
'    For Each Item1 In fldr.Items
'        'Выписываем адресатов
'        str1 = Item1.Email1Address
'        PrintInCell (str1)
'        ActiveCell.Offset(-1, 1).Range("A1").Select
'        str1 = Item1.Subject
'        PrintInCell (str1)
'        ActiveCell.Offset(0, -1).Range("A1").Select
'    Next
'    PrintInCell ("")
'    PrintInCell ("")
    
    'обрабатываем папку Отправленные
    PrintInCell ("Адресаты из папки Отправленные")
    Set fldr = olApp.Session.GetDefaultFolder(5)  '5 = olFolderSentMail
    'Call processFolder(fldr)
    For Each Item1 In fldr.Items
        'Выписываем адресатов
        If Item1.Class = 43 Then  'сообщения -  Class = 43
            If Item1.Recipients.Count > 0 Then
                For Each Recipient1 In Item1.Recipients
                    str1 = Recipient1.Address
                    PrintInCell (str1)
                Next
            End If
        End If
    Next

End Sub


Sub PrintInCell(val1 As String)
     'Пользовательская функция записи
    ActiveCell.Value = val1
    ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Изменено: Alex_Gur - 01.10.2018 17:19:24
 
Вторую неделю мониторю просторы форумов и только нашел что-то очень похожее... Подскажите, пожалуйста, а можно ли как-то запросом выгрузить список контактов из определенной группы рассылки??
 
Цитата
vehnep написал:
нашел что-то очень похожее...
вааще не похоже.

Группа рассылки  - это в локальных контактах  или группа на сервере? Если на сервере, то может быть скрыты члены этой группы.…… Лучше сделайте другую тему , а еще лучше на профильном форуме про Outlook.
По вопросам из тем форума, личку не читаю.
 
Это корпоративная почта, полагаю на сервере все данные, но список раскрывающийся, значит никто из членов не скрыт.
Просто человек получил данные из Outlook таким способом, поэтому подумал, что возможно есть возможность достать и данные по группе.
Если знаете, подскажите, пожалуйста, может достаточно что-то просто поменять в этом коде?)
 
Если группа не динамическая, то проще запрос к LDAP , а в данном случае AD скорее всего,  и получить список членов группы.
А вот если она динамическая, то по идее также можно получить параметры фильтра и сделать запрос, но надо смотреть.
msExchDynamicDLBaseDN, msExchDynamicDLFilter дадут параметры, а уж получить список - не проблема, вот только надо учесть возможную вложенность групп.

Что касается использования Outlook, то что-то я сомневаюсь, но я не последняя инстанция в данном случае. надо пробовать.  Мне кажется, что Expand Contact Group  - это функция интерфейса Outlook, а не свойство обьекта сообщения и действия - это
По вопросам из тем форума, личку не читаю.
 
А как выбирать контакты из папки отправленные, и как из полей СС и ТО если там больше чем один получатель?
Страницы: 1
Читают тему
Наверх