replaceHTMLbody中的文本(从Excel VBA创build电子邮件)

我有下面的VBA代码来正确地使用电子邮件模板创build一个电子邮件,但是我试图使用Substitute()函数来改变电子邮件正文中的一些文本。 我收到一个错误,我不确定如何解决这个问题,任何帮助将是伟大的!

运行时错误“1004”:

无法获取WorksheetFunction类的replace属性

这是试图从我的模板创build电子邮件的代码…

 Public Function GenerateEmail(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 .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 

你可以使用Replace

 .HTMLbody = Replace(OutMail.HTMLbody, "%TESTNUM%", "98541") 

Replace是正确的方式去这里回答@Brax。


对于任何想要了解这个错误背后原因的人。

只是为了解释为什么1004发生替代,你需要检查使用WorksheetFunction时的参数。

这里问题是Excel单元格中允许的字符数。 您只能在单元格中放入32767字符。 现在,当然,你的HTMLBody中有更多的字符,因此错误。

 Sub Test() Dim validString As String Dim inValidString As String validString = "a" & Space(32766) inValidString = "b" & Space(32767) '/ Works as the string length is valid cell length : < =32767 MsgBox WorksheetFunction.Substitute(validString, "a", "b") '/ Fails as the string length is invalid in terms of cell length : >32767 MsgBox WorksheetFunction.Substitute(inValidString, "a", "b") End Sub