Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
Подключил библиотеку, но что-то вот тут

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    [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 и выходит из процедуры.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам