Событие Outlook: при изменении "Адрес отправителя"

Кто-нибудь знает, можно ли подключиться к событию, когда пользователь меняет раскрывающийся список адресов «От» в Outlook 2016:

введите здесь описание изображения

Я дошел до того, что протестировал некоторые макросы VBA для событий Application.ItemLoad и Application.ItemSend и т. д., но я надеялся, что есть больше событий, к которым я мог бы подключиться.


person chazjn    schedule 07.03.2017    source источник


Ответы (3)


Конечно, сработает событие MailItem.PropertyChange:

PropertyChange ("SendUsingAccount")
PropertyChange ("SentOnBehalfOfName")

Вы можете увидеть живые события в OutlookSpy — откройте новый элемент, нажмите кнопку «Элемент» на ленте OutlookSpy. , перейдите на вкладку «События» — OutlookSpy будет регистрировать события по мере их возникновения.

person Dmitry Streblechenko    schedule 08.03.2017

Событие PropertyChange Класс MailItem запускается при изменении явного встроенного свойства (например, Subject) экземпляра. Имейте в виду, что вы можете не запустить событие, как только измените значение в пользовательском интерфейсе. Outlook может не запускать события, пока фокус не будет перемещен в другое поле или элемент не будет сохранен.

person Eugene Astafiev    schedule 08.03.2017

Для полноты — вот полный код, который я реализовал для захвата интересующего меня события.

Dim WithEvents myInspector As Outlook.Inspectors
Dim WithEvents myMailItem As Outlook.MailItem

Private Sub Application_Startup()

    Set myInspector = Application.Inspectors

End Sub

Private Sub myInspector_NewInspector(ByVal Inspector As Outlook.Inspector)

    If TypeOf Inspector.CurrentItem Is MailItem Then
        Set myMailItem = Inspector.CurrentItem
    End If

End Sub

Private Sub myMailItem_PropertyChange(ByVal Name As String)

    ' Properties we are interested in: "SendUsingAccount" / "SentOnBehalfOfName"
    ' Both get fired when the 'From' field is changed/re-selected
    ' So we are only going to trigger on one event or we will call the code twice
    If Name = "SentOnBehalfOfName" Then
        MsgBox myMailItem.SentOnBehalfOfName
    End If

End Sub
person chazjn    schedule 10.03.2017