2017-10-16 148 views
0

我正在使用下面的代碼來自動生成電子郵件。Excel用電子郵件替換Premade電子郵件模板中的文本

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 類的替代屬性。」

我是否缺少對庫的引用?我應該使用不同的東西嗎?

電子郵件被保存爲.oft格式,所以我在電子郵件中有%TESTNUM%的一行,我正在用98541(或任何其他需要傳入該函數的字符串)取代

回答

0

我有使用非常相似的代碼在Excel中工作的HTML電子郵件。不同之處在於我使用文本構建了一個臨時字符串,並且可以在字符串上執行替代代碼。 然後,你可以簡單地使用: .HTMLbody = temp_string

它可能不那麼優雅,但它會幫助你找出問題所在。