Обнаружение при нажатии кнопки ОТПРАВИТЬ - PullRequest
0 голосов
/ 16 ноября 2018

Насколько мне известно, существует два способа отправки почтового сообщения в Outlook:

  1. Физическим нажатием кнопки ОТПРАВИТЬ в окне инспектора или

  2. Выполнение MailItem.Send с помощью макрокоманды

Как их различить с помощью Outlook VBA?

В частности, как я могу определить, когда отправлятьнажата кнопка?

Можно ли изменить ItemSend(), чтобы зафиксировать только это событие, а не другое?

1 Ответ

0 голосов
/ 16 ноября 2018

Я не совсем уверен, есть ли способ определения метода, с помощью которого был отправлен предмет, или нет - однако, по крайней мере, есть обходной путь, который даст вам тот же эффект.Для этого вам потребуется создать логическую переменную в верхней части вашего модуля, в этом случае мы используем isVBA.

Внутри обработчика событий вы добавите оператор If Not isVBA - это будет True всякий раз, когда вы вручную отправляете элемент, физически нажимая вашу кнопку.

Однако в процедуре, использующей метод MailItem.Send, вы добавите isVBA = True в любое время до отправки- который сообщит вашему обработчику событий, что это не «ручная» отправка.

Вот визуальное представление:

Private isVBA As Boolean

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    If Not isVBA Then

        Rem: Do what you need to do with a MANUAL send

    End If

End Sub

Sub myVBASendMethod()

    ' Setting this to true will tell the event that you're using MailItem.Send
    isVBA = True

    ' Event Triggered using MailItem.Send

    ' Reset this back to false
    isVBA = False

End Sub
...