【发布时间】:2015-06-19 03:52:45
【问题描述】:
我正在尝试使用自定义超链接填充一系列生成的电子邮件,但无法正确生成超链接。 我有一个用户表单,允许创建报告的人在电子邮件正文中输入文本字段。该字段被分配给一个表。
在我的代码中,我正在提取这些字段并解析它们以查找 DATE 和 HYPERLINK 等关键字,并将这些关键字替换为代码生成的数字。
当我创建超链接时,我将它们插入到正文字符串中,如下所示:
Function CreateHyperLink(HyperText, HyperLink) As String
CreateHyperLink = "<HTML><BODY>"
CreateHyperLink = CreateHyperLink & "<A href='" & HyperLink & "'>'" & HyperText & "'</A>"
CreateHyperLink = CreateHyperLink & "</BODY></HTML>"
End Function
但是当我将它们插入时(eBody 是一个字符串数组)
Set oMail = oApp.CreateItem(olMailItem)
With oMail
.To = t
.CC = c
.HTMLBody = eBody(i)
.Subject = eSubject(i)
ETC.....
超链接创建正确,但我丢失了用户输入的文本中的所有间距和换行符。
如果我改用
Set oMail = oApp.CreateItem(olMailItem)
With oMail
.To = t
.CC = c
.Body = eBody(i)
.Subject = eSubject(i)
ETC.....
我保留所有格式但丢失了超链接。 有两全其美的解决方案吗?我不希望我的用户必须以 HTML 格式输入整个电子邮件。
方法.htmlBody的示例输出(超链接有效但格式缺失)
可以通过以下方式访问该文件: '点击这里访问报告' 请使用过滤器选择您的...
方法.Body的示例输出(超链接无效但已格式化)
可以通过以下方式访问该文件:
<HTML><BODY><A href='http://FILELOCATION'>'Click here to access the Report '</A></BODY></HTML> "
请使用过滤器选择您的...
有没有办法在 .body 中添加超链接或使用 .HTMLbody 保持格式?
【问题讨论】:
-
听起来您的代码正在覆盖电子邮件正文的现有 HTML 结构。您能否捕获(在通过
debug.print打印的字符串或临时保存到文件中)电子邮件HTMLBody的前后视图?这将告诉您是否正确修改/插入新链接。 -
感谢您的回复,我从没想过这样检查 HTMLbody。
<P><FONT FACE="Calibri">&nbsp;&lt;HTML&gt;&lt;BODY&gt;&lt;A href='<A HREF="http://HYPERLINK">http://HYPERLINK</A> to Report/Report'&gt;'Click here to access the Report '&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;&nbsp;&nbsp; </FONT></P> <BR>你的理论是对的,我去看看我添加原始格式文本后是否可以添加超链接谢谢你的帮助! -
作为回复解释为什么我选择 Peters Answer,如果有人在未来偶然发现这一点。我选择了 Peter 使用的方法而不是 Pauls 的答案,尽管两者都可以工作并产生相似的结果,但 Peters 在我目前的系统中效果更好。通过在文本框中使用
.body填充电子邮件正文,Outlook 会自动为我生成 HTML 标记。以便保留文本框的格式。然后使用.HTMLbody在填充正文中间插入超链接,以允许超链接正确生成而不会覆盖 HTML 标签。