Vba 替换HTML正文中的文本

Vba 替换HTML正文中的文本,vba,email,outlook,Vba,Email,Outlook,我正在尝试替换Outlook 2010中已创建的模板主体中的文本。这样做的目的是,用户可以相当轻松地更新电子邮件发送到的联系人 Sub NewUserEmail() Dim myItem As Outlook.MailItem Dim strContact As String Dim strCompanyName As String Dim strHTML As String Set myItem = Application.CreateItemFromTemplate( _ "

我正在尝试替换Outlook 2010中已创建的模板主体中的文本。这样做的目的是,用户可以相当轻松地更新电子邮件发送到的联系人

Sub NewUserEmail()

Dim myItem As Outlook.MailItem
Dim strContact As String
Dim strCompanyName As String
Dim strHTML As String

Set myItem = Application.CreateItemFromTemplate( _
      "C:\Users\jim.reagan\AppData\Roaming\Microsoft\Templates\NewUserEmail.oft")
    strHTML = myItem.HTMLBody
    strContact = InputBox("What is the Contact's name?")
    myItem.HTMLBody = Replace(myItem.HTMLBody, "%<Contact>%", strContact)

myItem.Display
End Sub
Sub-NewUserEmail()
将myItem设置为Outlook.MailItem
Dim strContact作为字符串
Dim strCompanyName作为字符串
作为字符串的Dim strHTML
设置myItem=Application.CreateItemFromTemplate(_
“C:\Users\jim.reagan\AppData\Roaming\Microsoft\Templates\NewUserEmail.oft”)
strHTML=myItem.HTMLBody
strContact=InputBox(“联系人的姓名是什么?”)
myItem.HTMLBody=替换(myItem.HTMLBody,%%,strContact)
myItem.Display
端接头

模板将打开以供查看,但尚未对电子邮件正文进行替换。如果我使用myItem.Body,则替换会起作用,但随后我会丢失电子邮件的格式。我遗漏了什么?

我不确定如何标记或标记此问题的答案,但以下是我从Tim Williams提供的编辑中获得的代码,感谢您的帮助:

Sub NewUserEmail()

    Dim myItem As Outlook.MailItem
    Dim strContact As String
    Dim strCompanyName As String
    Dim strHTML As String


    Set myItem = Application.CreateItemFromTemplate("C:\file location\file.oft")
    strHTML = myItem.HTMLBody
    strContact = InputBox("What is the Contact's name?")
    myItem.HTMLBody = Replace(myItem.HTMLBody, "%CONTACT%", strContact)

    myItem.Display

End Sub

您确定HTMLBody实际上包含“%%”吗?它是我放在电子邮件正文中的字符串的一部分。从样板模板中使用的一些东西。好的,但是你能在设置属性之前和之后输出(MsgBox?)HTMLBody属性的内容吗?@Dmitry Streblechenko-非常感谢。我遇到了同样的问题,你的想法帮助我找到了正确的方向(通过使用写主机而不是MsgBox)。但我发现这个过程是在模板HTMLbody中插入额外的代码,将我试图“替换”的短语分隔开来。我尝试使用%和!还有其他的,但是HTML一直把它们和短语本身分开。当我使用感叹号时,实际生成的HTML代码是“!”(不带引号)。所以我删除了所有的“特殊”字符,只使用字母。再次感谢