Страницы: 1
RSS
Импорт адресов из Адресной книги Outlook
 
Уважаемые!  
Существует некая программа (взятая на форуме - спасибо ее создателям) по рассылке сообщений, где список адресов е-mail берется из колонок отдельного листа. Можно ли импортировать из Адресной книги Outlook (там создан "контакт" со списком рассылки) этот список на лист екселя? Дело в том, что этот список в "контакте" большой и постоянно меняется и хотелось бы, что-бы по нажатию кнопки на листе выводилась актуальная информация. Подскажите хотя-бы с чего начать.
 
зачем брать из outlook контакты, чтобы вставить в иксель, чтобы рассылать письма?  
 
рассылать письма - задача outlook.  
в аутлуке:  
Application.Session.AddressLists(...)
 
{quote}{login=}{date=24.12.2010 01:53}{thema=}{post}зачем брать из outlook контакты, чтобы вставить в иксель, чтобы рассылать письма?  
 
рассылать письма - задача outlook.  
в аутлуке:  
Application.Session.AddressLists(...){/post}{/quote}  
Необходимые расчеты и рассылку результатов производит программа, с которой работает один сотрудник. Другой - ответственный за актуальность списка рассылки, которая ведется в Outlook. Поэтому необходим автоматический экспорт списка в ексель.
 
Попробуйте из excel запустить что-то вроде  
Sub test()  
Dim oNamespace As Namespace  
Dim oFolder As MAPIFolder  
Dim oContactItem As ContactItem  
Set oNamespace = Outlook.Application.GetNamespace("MAPI")  
 
Dim AE As AddressEntry  
Dim r  
r = 1  
For Each AE In Outlook.Application.Session.AddressLists("Глобальный список адресов").AddressEntries  
   Cells(r, 1) = AE.Name  
   Cells(r, 2) = AE.Address  
   r = r + 1  
Next  
 
End Sub  
 
ps в reference надо подключить библиотеку Microsoft outlook
 
Только в строчку Cells(r, 2) = AE.Address  
Выдает что-то типа:  
/o=SRK/ou=First Administrative Group/cn=Recipients/cn=Postbox-005  
А хорошо-бы e-mail типа: xxx@mail.ru  
Ничего похожего в подсказке АЕ.??? не нашел :(  
Да и еще , а если не из Глобального списка, а из контактов?  
А где-нибудь можно найти описание объектов Outlook?
 
AE - это переменная (в подсказке надо искать AddressEntry)  
 
А что касается контактов, попробуйте так:  
Sub test()  
Dim oNamespace As Namespace  
Dim oFolder As MAPIFolder  
Dim oContactItem As ContactItem  
Set oNamespace = Outlook.Application.GetNamespace("MAPI")  
Set oFolder = oNamespace.GetDefaultFolder(olFolderContacts)  
Dim r  
r = 1  
For Each oContactItem In oFolder.Items  
   Cells(r, 1) = oContactItem.Email1Address  
   r = r + 1  
Next  
End Sub
 
Спасибо! Все получается, но все-таки надо почитать про объекты Outlook.  
Хоть и не часто, но повидимому с ними прийдется сталкиваться.
 
{quote}{login=SVM}{date=24.12.2010 05:43}{thema=}{post}Спасибо! Все получается, но все-таки надо почитать про объекты Outlook.  
Хоть и не часто, но повидимому с ними прийдется сталкиваться.{/post}{/quote}  
Совет: поставьте паузу после строки Cells(r, 1) = oContactItem.Email1Address  
и в окне Locals изучиете переменную oContactItem - по контексту станет понятно, какие свойства что означают
 
O'K  
Еще раз спасибо!
 
Да и еще - на мой взгляд, самое доступное описание VBA Outlook (на русском) дано в книге Ростислав Михеев "VBA и программирование в MS Office для пользователей". Могу скинуть по почте (если надо мой майл в подписи)
Страницы: 1
Читают тему
Наверх