Я использую этот код для извлечения информации из списка имен из моего глобального списка контактов.
Часто встречаются повторяющиеся имена, и код не может решить, кто является правильным контактом, поэтому пропускает их.Я пытаюсь сузить результаты, чтобы использовать только имена с моего сайта и, если контакт не с этого сайта (то есть они не должны появляться в поиске), пропустить его и вернуть его в свою строку.
Я хочу сделать это с помощью функции расширенного поиска в адресной книге Outlook, где я могу указать имя, фамилию и город.Есть ли способ изменить код, чтобы использовать расширенный поиск вместо общего поиска?
Sub GetOutlookInfo()
Dim I As Integer
Dim ToAddr As String
Dim ActivePersonVerified As Boolean
Dim ol As Outlook.Application
Dim DummyEMail As MailItem
Dim ActivePersonRecipient As Recipient
Dim oAE As Outlook.AddressEntry
Dim oExUser As Outlook.ExchangeUser
Dim oPA As Outlook.PropertyAccessor
Dim AliasRange As Range
Dim RowsInRange As Integer
'Instantiate Outlook
Set ol = CreateObject("Outlook.Application")
'E-mail aliases are in a named range "aliasrange"
'Assign the named range to a range object
Set AliasRange = Range("A1:A1000")
'Create a dummy e-mail to add aliases to
Set DummyEMail = ol.CreateItem(olMailItem)
RowsInRange = AliasRange.Rows.Count
'Loop through the aliases to retrieve the Exchange data
For I = 3 To RowsInRange
'Assign the current alias to a variable ToAddr
ToAddr = AliasRange.Cells(I, 1)
'Exit loop
If ToAddr = "" Then
Exit For
End If
'Use the alias to create a recipient object and add it to the dummy e-mail
Set ActivePersonRecipient = DummyEMail.Recipients.Add(ToAddr)
ActivePersonRecipient.Type = olTo
'Resolve the recipient to ensure it is valid
ActivePersonVerified = ActivePersonRecipient.Resolve
'If valid, use the AddressEntry property of the recipient to return an AddressEntry object
If ActivePersonVerified Then
Set oAE = ActivePersonRecipient.AddressEntry
'Use the GetExchangeUser method of the AddressEntry object to retrieve the ExchangeUser object for the recipient.
Set oExUser = oAE.GetExchangeUser
'Write the properties of the ExchangeUser object to adjacent columns on the worksheet.
AliasRange.Cells(I, 1).Offset(0, 1).Value = oExUser.Name
AliasRange.Cells(I, 1).Offset(0, 2).Value = oExUser.Manager
AliasRange.Cells(I, 1).Offset(0, 3).Value = oExUser.Department
AliasRange.Cells(I, 1).Offset(0, 4).Value = oExUser.JobTitle
AliasRange.Cells(I, 1).Offset(0, 5).Value = oExUser.OfficeLocation
AliasRange.Cells(I, 1).Offset(0, 6).Value = oExUser.City
AliasRange.Cells(I, 1).Offset(0, 7).Value = oExUser.StateOrProvince
AliasRange.Cells(I, 1).Offset(0, 8).Value = oExUser.StreetAddress
AliasRange.Cells(I, 1).Offset(0, 9).Value = oExUser.Alias
End If
'Remove the recipient from the e-mail
ActivePersonRecipient.Delete
Next I
ExitOutlookEmail:
Set DummyEMail = Nothing
Set ol = Nothing
End Sub