VBA Outlook Mail .display, запись, когда / если отправлено вручную
Мой код отображает сообщение с основной темой, телом, вложением. Далее пользователь вручную обновляет и настраивает сообщение и должен его отправить. Я хочу записать, когда (если) письмо отправлено. Это возможно или какие-либо советы?
Моя среда - Office 2007 с макросом, основанным на Excel, который идет в Outlook.
[Отрывок]
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail
.To = Email '.CC =
.Subject = Subj
.BodyFormat = olFormatHTML
.Body = Msg '.HTMLBody = Msg
If Not FileAttach = vbNullString Then .Attachments.Add (FileAttach)
.Display
End With
1 ответ
Это вполне возможно, используя событие _Send в классе Outlook.MailItem.
Как я его использую, я создаю класс EMail Watcher, поэтому, когда я создаю электронное письмо и выполняю.Display, я затем создаю новый объект EMailWatcher и приказываю ему просматривать это электронное письмо для отправки, а затем отчитываться, когда это происходит.
Вот класс, как я его использую. По сути, я также опционально могу установить BoolRange так, чтобы, если пользователь отправляет электронное письмо, этот диапазон Excel обновлялся с помощью True. Я также могу попросить класс обновить диапазон Excel со временем отправки электронного письма.
Public BoolRange As Range
Public DateRange As Range
Public WithEvents TheMail As Outlook.MailItem
Private Sub TheMail_Send(Cancel As Boolean)
If Not BoolRange Is Nothing Then
BoolRange.Value = True
End If
If Not DateRange Is Nothing Then
DateRange.Value = Now()
End If
End Sub
И вот как я это использую:
With oMail
.To = addr
.Subject = "CCAT eVSM Utilities License Code"
.Body = "Message body"
.Display
End With
Set CurrWatcher = New EmailWatcher
Set CurrWatcher.BoolRange = Range("G12")
Set CurrWatcher.TheMail = oMail
Надеюсь, это поможет...