VBA Outlook Mail .display,记录何时/如果手动发送

时间:2010-03-28 13:34:11

标签: vba outlook ms-office office-2007 outlook-2007

我的代码会显示包含基本主题,正文,附件的邮件。接下来,用户手动更新并自定义消息,并应发送消息。我想记录发送电子邮件的时间(如果)。这是可能的还是任何提示?

我的环境是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 个答案:

答案 0 :(得分:4)

这完全可以使用Outlook.MailItem类中的_Send事件。

我使用它的方式,我创建了一个名为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

希望这有助于......