首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTMLbody中的替代文本(从Excel创建电子邮件)

HTMLbody中的替代文本(从Excel创建电子邮件)
EN

Stack Overflow用户
提问于 2017-10-24 16:22:02
回答 2查看 1.8K关注 0票数 0

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

运行时错误“1004”: 无法获得WorksheetFunction类的替代属性

这是试图从我的模板创建电子邮件的代码..。

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-24 16:26:46

您可以只使用Replace

代码语言:javascript
运行
复制
.HTMLbody = Replace(OutMail.HTMLbody, "%TESTNUM%", "98541")
票数 1
EN

Stack Overflow用户

发布于 2017-10-24 16:52:36

正如@Brax所回答的,Replace是正确的方式。

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

为了解释为什么1004发生在替换中,您需要在使用WorksheetFunction时检查参数。

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

代码语言:javascript
运行
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46915480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档