根据Excel中的模板修改Outlook电子邮件的HTML正文
我正在尝试修改Outlook电子邮件的HTML正文,它基于Excel VBA中的模板 我的代码是:根据Excel中的模板修改Outlook电子邮件的HTML正文,excel,vba,outlook,Excel,Vba,Outlook,我正在尝试修改Outlook电子邮件的HTML正文,它基于Excel VBA中的模板 我的代码是: Sub Email_Button() Dim OutApp As Outlook.Application Dim OutMail As Outlook.MailItem Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItemFromTemplate("S:\some\path\to\fil
Sub Email_Button()
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItemFromTemplate("S:\some\path\to\file\Email.oft")
With OutMail
.Importance = olImportanceHigh
.Subject = "Subject " & Date
.Attachments.Add Application.ActiveWorkbook.FullName
.HTMLBody = WorksheetFunction.Substitute(OutMail.HTMLBody, "%target%", "replacement")
.Display
End With
' *** TIDY UP ***
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
这个问题非常类似于
我明白了
运行时错误287。应用程序定义或对象定义错误
在.HTMLBody修改行中
如果我删除此行,则会显示电子邮件,供用户在点击“发送”之前检查
我引用了Microsoft Outlook 15对象库
我补充说:
With OutMail
.bodyFormat = olFormatHTML
但在替换行中出现了相同的错误,因此我将替换更改为:
.HTMLBody = "<HTML><BODY>Some HTML text here</BODY></HTML>"
.HTMLBody=“此处有一些HTML文本”
邮件的正文也被更新了
因此,只有在尝试使用替代品或其来处理oft时,才会出现错误
调试器显示没有HTML正文:
我已确认body type已通过编程方式设置为HTML:
打开oft消息并检查:
问题的原因可能与
Substitute
方法有关,因此我建议运行以下代码以确保一切正常工作:
Sub CreateHTMLMail()
Dim OutApp As Outlook.Application
Set OutApp = CreateObject("Outlook.Application")
'Creates a new email item and modifies its properties.
Dim objMail As Outlook.MailItem
'Create email item
Set objMail = OutApp.CreateItemFromTemplate("S:\some\path\to\file\Email.oft")
With objMail
'Set body format to HTML
.BodyFormat = olFormatHTML
.HTMLBody = "<HTML><BODY>Enter the message text here. </BODY></HTML>"
.Display
End With
End Sub
Sub-CreateHTMLMail()
将OutApp设置为Outlook.Application
Set-OutApp=CreateObject(“Outlook.Application”)
'创建新的电子邮件项目并修改其属性。
将objMail设置为Outlook.MailItem
'创建电子邮件项目
设置objMail=OutApp.CreateItemFromTemplate(“S:\some\path\to\file\Email.oft”)
用objMail
'将正文格式设置为HTML
.BodyFormat=olFormatHTML
.HTMLBody=“在此处输入消息文本。”
.展示
以
端接头
另一个方面是Outlook安全提示。阅读本文中的更多信息。问题的原因可能与
替换方法有关,因此我建议运行以下代码以确保一切正常工作:
Sub CreateHTMLMail()
Dim OutApp As Outlook.Application
Set OutApp = CreateObject("Outlook.Application")
'Creates a new email item and modifies its properties.
Dim objMail As Outlook.MailItem
'Create email item
Set objMail = OutApp.CreateItemFromTemplate("S:\some\path\to\file\Email.oft")
With objMail
'Set body format to HTML
.BodyFormat = olFormatHTML
.HTMLBody = "<HTML><BODY>Enter the message text here. </BODY></HTML>"
.Display
End With
End Sub
Sub-CreateHTMLMail()
将OutApp设置为Outlook.Application
Set-OutApp=CreateObject(“Outlook.Application”)
'创建新的电子邮件项目并修改其属性。
将objMail设置为Outlook.MailItem
'创建电子邮件项目
设置objMail=OutApp.CreateItemFromTemplate(“S:\some\path\to\file\Email.oft”)
用objMail
'将正文格式设置为HTML
.BodyFormat=olFormatHTML
.HTMLBody=“在此处输入消息文本。”
.展示
以
端接头
另一个方面是Outlook安全提示。请阅读文章中的更多信息。最可能的原因是Outlook安全性
出于安全目的,HTMLBody、HTMLEditor、Body和WordEditor属性都受到地址信息安全提示的约束,因为邮件正文通常包含发件人或其他人的电子邮件地址
您可以在HKCU\Software\Policys\Microsoft\office\16.0\outlook\security中找到安全配置\
(将16.0更改为您的office版本)
您可以检查两个值,PrompTomAddressBookAccess和PrompTomAddressInformation Access
将其更改为2(或询问系统管理员),重新启动Outlook并重试
更多信息最可能的原因是Outlook安全性
出于安全目的,HTMLBody、HTMLEditor、Body和WordEditor属性都受到地址信息安全提示的约束,因为邮件正文通常包含发件人或其他人的电子邮件地址
您可以在HKCU\Software\Policys\Microsoft\office\16.0\outlook\security中找到安全配置\
(将16.0更改为您的office版本)
您可以检查两个值,PrompTomAddressBookAccess和PrompTomAddressInformation Access
将其更改为2(或询问系统管理员),重新启动Outlook并重试
更多信息当VBA有内置方法进行替换时,为什么要尝试使用工作表函数进行替换OutMail.HTMLBody=Replace(OutMail.HTMLBody,“要查找的字符串”,“替换字符串”)
@RyszardJędraszyk,但这并不能解决问题。如果是Outlook安全性错误(我认为可能是),是否有办法将HTML正文存储为文件,单独修改它,然后将其添加到正文中?是HTML格式的邮件吗?@TimWilliams是。如果VBA有内置方法,为什么要尝试使用工作表函数进行替换OutMail.HTMLBody=Replace(OutMail.HTMLBody,“要查找的字符串”,“替换字符串”)
@RyszardJędraszyk,但这并不能解决问题。如果是Outlook安全性错误(我认为可能是),是否有办法将HTML正文存储为文件,单独修改它,然后将其添加到正文中?是OutMail
HTML格式的邮件吗?@TimWilliams-yes。