我有下面的VBA代码,可以使用电子邮件模板正确地创建电子邮件,但是我试图使用Substitute()函数更改电子邮件正文中的一些文本。我收到了一个错误,我不知道如何解决这个问题,任何帮助都将是伟大的!
运行时错误“1004”: 无法获得WorksheetFunction类的替代属性
这是试图从我的模板创建电子邮件的代码..。
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发布于 2017-10-24 16:52:36
正如@Brax所回答的,Replace是正确的方式。
对于任何想要了解这个错误背后的原因的人来说。
为了解释为什么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 Subhttps://stackoverflow.com/questions/46915480
复制相似问题