Подпрограмма извлекает имена из контактной группы «MyGroupName» в Outlook и перечисляет их на активной рабочей таблице.
Sub Get_Email_List()
Dim I As Integer
Dim A1 As String
Dim B() As String
Dim WSN as String
Dim Group as String
Dim olApp As Outlook.Application
Dim myNamespace As Object
Dim myFolder As Object
Dim myItem As Object
Dim WordApp As Object
Application.ScreenUpdating = False
WSN = ActiveSheet.Name
Group = "MyGroupName"
Sheets(WSN).Select
Selection.Clear
Columns("A:D").Select
Selection.NumberFormat = "@"
Cells(1, 1).Select
Set olApp = New Outlook.Application
With olApp
Set myNamespace = .GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderContacts)
Set myItem = myFolder.Items(Group)
For I = 1 To myItem.MemberCount
Cells(I + 1, 1) = myItem.GetMember(I).Name
Cells(I + 1, 3) = myItem.GetMember(I).Address
Next I
End With
Set olApp = Nothing
Set myNamespace = Nothing
Set myFolder = Nothing
Set myItem = Nothing
Range("A1") = "Display Name"
Range("B1") = "Last Name"
Range("C1") = "Email Address"
Range("D1") = "Composite Email Address"
Range("A2:B" & I + 1).Select
Selection.Cells.Replace What:="'", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
A1 = ""
I = 2
While Cells(I, 1) > ""
If InStr(1, Cells(I, 1), ")") > 0 Then _
Cells(I, 1) = Left(Cells(I, 1), InStr(1, Cells(I, 1), "(") - 2)
B = Split(Cells(I, 1), " ")
Cells(I, 2) = Trim(B(UBound(B, 1)))
If I > 1 Then A1 = A1 & "; "
A1 = A1 & Trim(Cells(I, 1))
Cells(I, 4) = Cells(I, 1) & " <" & Cells(I, 3) & ">"
I = I + 1
Wend
ActiveWorkbook.Worksheets(WSN).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(WSN).Sort.SortFields.Add Key:=Range("B2:B" & I), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(WSN).Sort
.SetRange Range("A2:D" & I)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("A:C").Select
Selection.ColumnWidth = 28
Columns("D:D").Select
Selection.ColumnWidth = 48
Range("A1:D1").Select
Selection.Font.FontStyle = "Bold"
Range("A2").Select
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
Range("A1").Select
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
На самом деле это не так. Они хотят отправлять электронную почту через Outlook. Я хочу экспортировать определенные группы. Они предлагают просто использовать имя группы в качестве получателя. Но в моем случае это не сработает. – david
С чем вы столкнулись? Поиск DL или экспорт его членов? Что именно вы подразумеваете под «экспортом»? Сохранение в виде файла в определенном формате? Или просто чтение свойств? –
Ну с помощью экспорта я имею в виду, например, скопировать их в свой листок, добавив код в раздел '/ * Do something * /'. Но это не проблема. Моя проблема в том, что я donk знаю, как получить коллекцию контактов в какой-то группе в Outlook. Допустим, у меня есть группа под названием «Клиенты», и я хочу использовать ее в качестве источника для цикла 'for each'. Но я не знаю, чтобы присоединиться к этой конкретной коллекции – david