Excel通过电子邮件发送预制电子邮件模板

时间:2017-10-16 15:25:26

标签: excel excel-vba vba

我正在使用以下代码自动生成电子邮件。

Public Function GenerateEmail(sendToText As String, _
    sendCCText As String, sendBCCText 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
        .HTMLbody = WorksheetFunction.Substitute(OutMail.HTMLbody, "%TESTNUM%", "98541")
        .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

我的最终目标是将数据添加到电子邮件中,并将活动文档附加到其中。除了.HTLMbody部分之外,这里的所有内容都按预期工作。它给了我一个错误

  

“无法获取WorksheetFunction的Substitute属性   类“。

我错过了对图书馆的引用吗?我应该使用不同的东西吗?

电子邮件保存为.oft格式,所以我在电子邮件中有一行有%TESTNUM%,我想用98541替换(或者我需要传递给函数的任何其他字符串)

1 个答案:

答案 0 :(得分:0)

我使用非常相似的代码在Excel中使用HTML电子邮件。不同之处在于我使用文本构建了一个临时字符串,您可以在字符串上执行替换代码。 然后你可以简单地使用: .HTMLbody = temp_string

它可能不那么优雅,但它可以帮助你解决问题所在。