替换HTMLbody中的文本(从Excel VBA创建电子邮件)
我有以下VBA代码,可以使用电子邮件模板正确创建电子邮件,但是我正在尝试使用替换HTMLbody中的文本(从Excel VBA创建电子邮件),vba,excel,email,Vba,Excel,Email,我有以下VBA代码,可以使用电子邮件模板正确创建电子邮件,但是我正在尝试使用Substitute()函数更改电子邮件正文中的一些文本。我收到一个错误,不确定如何解决这个问题,任何帮助都将是伟大的 运行时错误“1004”: 无法获取工作表函数类的替换属性 下面是试图从我的模板创建电子邮件的代码 Public Function GenerateEmail(fileName As String) Application.ScreenUpdating = False Dim OutA
Substitute()
函数更改电子邮件正文中的一些文本。我收到一个错误,不确定如何解决这个问题,任何帮助都将是伟大的
运行时错误“1004”:
无法获取工作表函数类的替换属性
下面是试图从我的模板创建电子邮件的代码
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
.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
子测试()
作为字符串的Dim validString
Dim inValidString作为字符串
validString=“a”和空格(32766)
inValidString=“b”和空格(32767)
“/在字符串长度为有效单元格长度时起作用:<=32767
MsgBox工作表函数替换(有效字符串“a”、“b”)
“/失败,因为字符串长度在单元格长度方面无效:>32767
MsgBox工作表function.Substitute(无效字符串“a”、“b”)
端接头
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
子测试()
作为字符串的Dim validString
Dim inValidString作为字符串
validString=“a”和空格(32766)
inValidString=“b”和空格(32767)
“/在字符串长度为有效单元格长度时起作用:<=32767
MsgBox工作表函数替换(有效字符串“a”、“b”)
“/失败,因为字符串长度在单元格长度方面无效:>32767
MsgBox工作表function.Substitute(无效字符串“a”、“b”)
端接头
我更好奇的是,为什么你会收到那个错误,但你没有足够的信息来判断。@jeped我从另一个问题和帮助我失踪的人那里得到了大部分代码。我更好奇的是,为什么你会收到那个错误,但你没有足够的信息来判断。@jeped我有从另一个问题和帮助我的人那里得到了这段代码的大部分。这段代码工作得很好,我被困在上面太久了。。。非常感谢!是否有可能将“%TESTNUM%”
替换为一个范围(例如A3:B7)的图形?我该怎么做呢?这正是我想要的,我希望我能给出双倍的答案。我刚刚意识到创建一个图像,我想创建一个实际的图表。。。原因是当我搜索我发送的收件箱中的特定号码时,它也会出现在那里。有没有不使用图像的方法?效果很好,我被困在上面太久了。。。非常感谢!是否有可能将“%TESTNUM%”
替换为一个范围(例如A3:B7)的图形?我该怎么做呢?这正是我想要的,我希望我能给出双倍的答案。我刚刚意识到创建一个图像,我想创建一个实际的图表。。。原因是当我搜索我发送的收件箱中的特定号码时,它也会出现在那里。有没有不使用图像的方法?很好知道!每天学习一些新的东西。哇,这是很好的信息,也感谢对错误的解释!很高兴知道!每天学习一些新的东西。哇,这是很好的信息,也感谢对错误的解释!