【问题标题】:Capture time mail was sent捕获时间邮件已发送
【发布时间】:2017-09-26 16:22:19
【问题描述】:

我有一个 Excel 工作簿,其中包含电子邮件模板和附件列表。

我对每个列表项都有一个插入按钮,用于单独组合每封电子邮件(根据程序需要)。

我已经编写了代码来组合它们并显示一封电子邮件:

Public Sub SendToThisPerson()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Dim r, c As Integer
    Dim b As Object
    Set b = ActiveSheet.Buttons(Application.Caller)
    With b.TopLeftCell
        r = .Row
        c = .Column
    End With
    r = 14
    c = 3
    
    Dim filename As String, subject1 As String, path1, path2, wb As String
    Dim wbk As Workbook
    filename = ThisWorkbook.Worksheets(1).Cells(r, c + 4)
    path1 = Application.ThisWorkbook.Path & ThisWorkbook.Worksheets(1).Range("F4")
    path2 = Application.ThisWorkbook.Path & ThisWorkbook.Worksheets(1).Range("F6")
    wb = ThisWorkbook.Worksheets(1).Cells(r, c + 7)
    
    Dim outApp As Outlook.Application
    Dim oMail As Outlook.MailItem

    Set outApp = New Outlook.Application
    Set oMail = outApp.CreateItemFromTemplate(path1 & filename)

    oMail.Display
    subject1 = oMail.subject
    subject1 = Left(subject1, Len(subject1) - 10) & Format(ThisWorkbook.Worksheets(1).Range("D7"), "DD/MM/YYYY")

    Set wbk = Workbooks.Open(filename:=path2 & wb)
    
    wbk.Worksheets(1).Range("I4") = ThisWorkbook.Worksheets(1).Range("D7").Value
    wbk.Close True
    
    With oMail
        .subject = subject1
        .Attachments.Add (path2 & wb)
    End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

用户决定发送或不发送。

我想知道是否点击了“发送”按钮,将发送时间添加到工作表中。
我尝试了应用程序事件。

【问题讨论】:

  • 本质上,您希望在 Outlook 中(而不是在 Excel 中)捕获 Application.ItemSend 事件,并且您希望确保可以区分任何其他邮件项目和自动生成的邮件项目。可能是某个.To 电子邮件地址,或者在正文或主题行中有某个字符串(例如---auto email---)来识别这些电子邮件。如果是这种情况,那么 Outlook VBA(同样,不是 Excel)将不得不将您想要的信息写入该 Excel 文件。
  • 我不想写邮件。我只需要知道电子邮件是否已发送!?如果用户点击了发送,系统让我们说现在()的时间,将被写在工作表上,以表明此列表项已合并并发送。
  • 我在网上看到过代码,有人用了很有趣的方法:创建一个对象,把打开的邮件放到这个对象上,然后使用应用事件。例如 _Close 事件,如果电子邮件是用 X(红色按钮)或这个方向的东西关闭的。你认为它会如何运作?我应该花时间在这上面,否则它不适用于 Outlook 项目?
  • 也许我应该停止尝试并将其留给其他人。显然我无法表达我的观点。再次,我只能向您指出此链接:msdn.microsoft.com/en-us/library/ff865379.aspx,并希望您了解您的最后评论是正确的。查看链接站点上的代码示例,并确保按照代码中的建议创建 mailItem WithEvents。然后你应该能够捕获按钮按下。

标签: excel vba email outlook


【解决方案1】:

对于所有对此问题感兴趣的人,找到解决方案的进展:EXCEL VBA, Manual Outlook email sender, Class module Issue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2014-09-28
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多