我正在开发一个新的Excel文档,我们将用它来输入信息,然后使用该信息从OFT模板生成电子邮件。基本上,VBA在OFT中查找某个字符串,然后将其替换为单元格或activex文本框的内容。例如:
细胞参考:
.HTMLBody = Replace(.HTMLBody, "<< summary >>", Worksheets("Sheet1").Range("H3"))
ActiveX文本框参考:
.HTMLBody = Replace(.HTMLBody, "<< previous-updates >>", ActiveSheet.OLEObjects("PreviousUpdates").Object.Text)
我遇到的问题是格式化&#34; PreviousUpdates&#34;文本框。我可以用HTML格式化其中的文本,并正确导入OFT模板。但是,我的许多同事都不了解HTML,因此无法通过这种方式格式化文本。考虑到这一点,我的问题有两个:
TIA提供任何帮助。
答案 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, "<< summary >>", Summary.Text)
.HTMLBody = Replace(.HTMLBody, "<< latest-update >>", LatestUpdate.Text)
.HTMLBody = Replace(.HTMLBody, "<< previous-updates >>", 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中正确显示文本。
它并不完美,但它有效且人们使用起来很简单。