Я сортирую получателей при составлении письма.
Если у меня есть 3 получателя (например), запустите макрос сортировки, а затем удалите получателя из текстового поля «Кому:», запустив макрос во второй раз.вызывает повторное появление удаленного получателя.Когда я выполняю макрос во втором запуске, я вижу, что и у .CurrentItem.To
, и у объекта Recipients
все 3 получателя.
Это прерывисто.Есть ли способ принудительно обновить объект Recipients
, когда текстовое поле To: было отредактировано?
Я не могу найти ничего в Outlook VBA документации проб и ошибококазался бесплодным.
Код выдержки:
Public Sub SortRecipients()
With Application.ActiveInspector
If TypeOf .CurrentItem Is Outlook.MailItem Then
Debug.Print "Before: "
Debug.Print "To: " & .CurrentItem.To
Debug.Print "# of recipients: " & .CurrentItem.Recipients.Count
' Force an update if recipients have changed (DOESN'T HELP)
.CurrentItem.Recipients.ResolveAll
Set myRecipients = .CurrentItem.Recipients
' Create objects for To list
Dim myRecipient As recipient
Dim recipientToList As Object
Set recipientToList = CreateObject("System.Collections.ArrayList")
' Create new lists from To line
For Each myRecipient In myRecipients
recipientToList.Add myRecipient.Name
Next
' Sort the recipient lists
recipientToList.Sort
' Remove all recipients so we can re-add in the correct order
While myRecipients.Count > 0
myRecipients.Remove 1
Wend
' Create new To line
Dim recipientName As Variant
For Each recipientName In recipientToList
myRecipients.Add (recipientName)
Next recipientName
.CurrentItem.Recipients.ResolveAll
End If
End With
End Sub
Шаги для воспроизведения:
- Добавьте 4 получателей в строку «Кому» нового электронного письма в Outlook2007 (нажмите «Проверить имена», чтобы разрешить адреса.)
- Запустите макрос SortRecipients.(Получатели теперь отсортированы)
- Удалить одного получателя, повторно запустить макрос SortRecipients.
- После этого у меня все еще есть 4 получателя (удаленный возвращается).