Страница: 1 |
Страница: 1 |
Вопрос: Как получить данные из адресной книги Outlook?
Добавлено: 09.08.07 14:06
Автор вопроса: Сергей
Привет!
Подскажите пож-та есть такая задачка: в Экселе по нажатию кнопки загружается пользовательская форма в которой есть TextBox1 и TextBox2. В TextBox2 после появления формы должны заполниться адреса из адресной книги Аутлука папки «Контакты». В TextBox1 можно вводить начальные символы контакта, а курсор в TextBox2 должен при этом позиционироваться на контакте, начинающимся с введенных символов (поиск по начальным символам). После выбора контакта (Enter или двойной щелчек мыши) контакт должен поместиться на листе: в одной ячейке «имя», в другой «эл. адрес», в третьей «телефон». Пока только нарисовал форму и кнопку на листе, которой вызывается форма. Как осуществить заполнение данными TextBox2 из адресной книги, папки «Контакты»? Благодарю за помощь.
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #1
Добавлено: 15.08.07 22:17
1. Подключить библиотеку Microsoft Outlook 11.0 Object Library в меню Tools\References... (для Office2003).
2. В модуле формы добавить следующий код:
Option Explicit
Public ol As Outlook.Application
Public oNS As Outlook.Namespace
Public oFolder As Outlook.MAPIFolder
Public oContact As Outlook.ContactItem
Public oAllContacts As Outlook.Items
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
For Each oContact In oAllContacts
If TextBox1.Text = VBA.Left(oContact.FullName, VBA.Len(TextBox1.Text)) Then
TextBox2.Text = oContact.FullName
Exit For
Else
TextBox2.Text = Empty
End If
Set oContact = Nothing
Next
End Sub
Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With Workbooks(ThisWorkbook.Name).Worksheets(1)
.Range("A1" = oContact.FullName
.Range("B1" = oContact.Email1Address
.Range("C1" = oContact.MobileTelephoneNumber
End With
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
Set ol = New Outlook.Application
Set oNS = ol.GetNamespace("MAPI"
Set oFolder = oNS.GetDefaultFolder(olFolderContacts)
Set oAllContacts = oFolder.Items
End Sub
Номер ответа: 2
Автор ответа:
Pavel
Вопросов: 0
Ответов: 82
Профиль | | #2
Добавлено: 16.08.07 11:22
Подключил библиотеку, но что-то вот тут
[B]For Each oContact In oAllContacts[/B]
выдаёт ошибку
Run-time error "13":
Type mismatch
(((
Номер ответа: 3
Автор ответа:
Сергей
Вопросов: 13
Ответов: 25
Профиль | | #3
Добавлено: 16.08.07 15:52
А у меня TextBox1 не заполняется. Доходит до Exit For и выходит из процедуры.