编辑来自 Excel VBA 的 Outlook 电子邮件

Edit Outlook email from Excel VBA

我已获得以下代码,可成功使用保存在本地计算机 (fileName) 上的预制 Outlook 模板并将活动 Excel 文档附加到其中,但是还有一些其他文本我想添加到电子邮件模板以节省复制和粘贴它的时间。无论如何要将额外的正文添加到预制电子邮件模板中,或者如果我可以让我的 VBA 代码读取正文然后我可以通过将它存储在一个临时变量中来添加它?这是一个保存的 .msg 文件

Public Function GenerateEmail(sendTo As String, _
    sendCC As String, sendBCC As String, _
    subjectText As String, fileName As String)

    Application.ScreenUpdating = False

    Dim OutApp As Object
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItemFromTemplate(fileName)

    With OutMail
        .sendTo = sendToText
        .CC = sendCCText
        .BCC = sendBCCText
        .Subject = subjectText
        .Attachments.Add (Application.ActiveWorkbook.FullName)
        .Display
    End With

    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With

End Function

只需在电子邮件正文中添加一个 .body,如下所示

 With OutMail
        .sendTo = sendToText
        .CC = sendCCText
        .BCC = sendBCCText
        .Subject = subjectText
        .body = "Add your Text here"
        .Attachments.Add (Application.ActiveWorkbook.FullName)
        .Display
End With

您必须保存一个模板 - 您只需起草一个模板(我通常使用标记来替换 body 的某些部分,具体取决于收件人 - 例如 "Dear %Recipient%")然后 "Save as" 一个 .oft 文件。然后 运行 你编码发送邮件。我还会使用 .HTMLbody 来维护模板的格式,这样你就可以输入

With OutMail
        .sendTo = sendToText
        .CC = sendCCText
        .BCC = sendBCCText
        .Subject = subjectText
        .HTMLbody= WorksheetFunction.Substitute(OutMail.HTMLbody, "%Recipient%", [Recipiants name here (this could be a stored string)])
        .Attachments.Add (Application.ActiveWorkbook.FullName)
        .Display
End With