启用富文本格式并保持格式

时间:2017-09-04 10:29:21

标签: excel vba excel-vba outlook

我正在开发一个新的Excel文档,我们将用它来输入信息,然后使用该信息从OFT模板生成电子邮件。基本上,VBA在OFT中查找某个字符串,然后将其替换为单元格或activex文本框的内容。例如:

细胞参考:

.HTMLBody = Replace(.HTMLBody, "<< summary >>", Worksheets("Sheet1").Range("H3"))

ActiveX文本框参考:

.HTMLBody = Replace(.HTMLBody, "<< previous-updates >>", ActiveSheet.OLEObjects("PreviousUpdates").Object.Text)

我遇到的问题是格式化" PreviousUpdates"文本框。我可以用HTML格式化其中的文本,并正确导入OFT模板。但是,我的许多同事都不了解HTML,因此无法通过这种方式格式化文本。考虑到这一点,我的问题有两个:

  1. 如何在" PreviousUpdates"中启用富文本格式。文本框?
  2. 如何在导出"导出时保证格式化。到OFT模板?
  3. TIA提供任何帮助。

1 个答案:

答案 0 :(得分:0)

虽然我还没有找到解决我最初问题的方法,但我已经设法根据Zac提供的反馈找到了解决方法。我有点接受了他的想法并且随之而去。我想如果有人遇到同样的问题我会发布我的解决方法。

所以,我所做的是使用Replace语句格式化HTML中的文本,填充HTML电子邮件模板,然后删除HTML标记,以便文本在Excel中仍然正确格式化。以下是我的代码示例:

    ' Add HTML formatting to text updates so it displays correctly in the email.
PreviousUpdates.Text = Replace(PreviousUpdates, vbCrLf, "<br>")
LatestUpdate.Text = Replace(LatestUpdate, "-", "<li>")
LatestUpdate.Text = Replace(LatestUpdate, vbCrLf, "<br>")

' Populate the HTML email template.
.Subject = Replace(.Subject, "<< REF >>", Worksheets("Sheet1").Range("C3"))
.HTMLBody = Replace(.HTMLBody, "&lt;&lt; summary &gt;&gt;", Summary.Text)
.HTMLBody = Replace(.HTMLBody, "&lt;&lt; latest-update &gt;&gt;", LatestUpdate.Text)
.HTMLBody = Replace(.HTMLBody, "&lt;&lt; previous-updates &gt;&gt;", PreviousUpdates.Text)
.Display

' Remove HTML formatting from text updates so it displays correctly in Excel.
PreviousUpdates.Text = Replace(PreviousUpdates, "<br>", vbCrLf)
LatestUpdate.Text = Replace(LatestUpdate, "<li>", "-")
LatestUpdate.Text = Replace(LatestUpdate, "<br>", vbCrLf)

所以这段代码正在做的是用HTML换行符(&lt; br&gt;)替换Excel回车符(vbCrLf)。它也在寻找破折号,并用子弹列表HTML标签替换它。

在电子邮件中填充后,它会删除HTML格式,以便在Excel中正确显示文本。

它并不完美,但它有效且人们使用起来很简单。