Я использую VBA в Excel 2010 с Outlook 2010 (уже открыт).Открытие адресной книги Outlook из Excel
Как я мог бы написать саб для командной кнопки, так что, когда пользователь нажимает на нее: открывает
1 Перспективы адресной книги;
2 Пользователь выбирает контакт и нажимает ok;
3 Имя, фамилия и адрес электронной почты контакта хранятся в ячейках активного рабочего листа?
Я попытался с помощью этого метода без успеха: SelectNamesDialog Object
Кроме того, я не уверен, что мне нужно использовать: Application.GetNamespace("MAPI")
Решение: Вот как получить все детали из выбранного контакт в GAL:
Вам необходимо открыть глобальный список адресов, а не контакты из папки контактов, а также использовать объект Outlook.ExchangeUser, как описано в this page: см. последний ответ от David Zeme нс.
Private Sub cmdSetProjectMember1_Click()
Dim olApp As Outlook.Application
Dim oDialog As SelectNamesDialog
Dim oGAL As AddressList
Dim myAddrEntry As AddressEntry
Dim exchUser As Outlook.ExchangeUser
Dim AliasName As String
Dim FirstName As String
Dim LastName As String
Dim EmailAddress As String
Set olApp = GetObject(, "Outlook.Application")
Set oDialog = olApp.Session.GetSelectNamesDialog
Set oGAL = olApp.GetNamespace("MAPI").AddressLists("Global Address List")
With oDialog
.AllowMultipleSelection = False
.InitialAddressList = oGAL
.ShowOnlyInitialAddressList = True
If .Display Then
AliasName = oDialog.Recipients.Item(1).Name
Set myAddrEntry = oGAL.AddressEntries(AliasName)
Set exchUser = myAddrEntry.GetExchangeUser
If Not exchUser Is Nothing Then
FirstName = exchUser.FirstName
LastName = exchUser.LastName
EmailAddress = exchUser.PrimarySmtpAddress
'...
MsgBox "You selected contact: " & vbNewLine & _
"FirstName: " & FirstName & vbNewLine & _
"LastName:" & LastName & vbNewLine & _
"EmailAddress: " & EmailAddress
End If
End If
End With
Set olApp = Nothing
Set oDialog = Nothing
Set oGAL = Nothing
Set myAddrEntry = Nothing
Set exchUser = Nothing
End Sub
Благодарим за добавление решения! Нашел этот маленький кусочек вашего решения, очень полезный для моего приложения. 'oDialog.Recipients.Item (1) .Name' – Kelsius