访问 VBA 展望 Mailtiem.Body 对比 MailItem.HTMLBody
Access VBA Outlook Mailtiem.Body vs MailItem.HTMLBody
我正在尝试使用自定义超链接填充一系列生成的电子邮件,但无法正确生成超链接。
我有一个用户表单,允许创建报告的人在电子邮件正文中输入文本字段。此字段已分配给 Table。
在我的代码中,我正在提取这些字段并针对 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.
中输入整个电子邮件
Example Output of Method .htmlBody (Hyperlink is Valid but Missing Format)
可以通过以下方式访问该文件:
'Click here to access the Report '
请使用过滤器 select 您的...
Example Output of Method .Body (Hyperlink is not Valid but Formated)
可以通过以下方式访问该文件:
<HTML><BODY><A href='http://FILELOCATION'>'Click here to access the Report '</A></BODY></HTML> "
请使用过滤器 select 您的...
有没有办法在 .body 中添加超链接,或者有办法用 .HTMLbody 保持格式?
如果我正确阅读了您的描述,您正在为每个超链接创建一组新的 "HTML" 和 "BODY" 标签。您生成的 HTML 电子邮件中应该只有 1 个 HTML 和 1 个 BODY 标签。
我建议您将 CreateHyperLink 函数更新为:
Function CreateHyperLink(HyperText, HyperLink) As String
CreateHyperLink = "<a href='" & HyperLink & "'>'" & HyperText & "'</a>"
End Function
看看Range in Middle of Email Body。我在那里的回答显示了如何插入现有 .HTMLBody
.
的中间
正如乔希所提到的。您必须将整个电子邮件包装在一个 HTML
BODY
中。所以我正在使用 Josh 已经提到的内容,但对您的表单设计进行了一些更改。
第一步。转到表单的设计视图,确保文本框(您输入电子邮件正文的地方)设置为 Rich Text 而不是纯文本。富文本自动将您的数据包装在适当的 DIV
标签中。所以你创建超链接的代码是,
Function CreateHyperLink(HyperText, HyperLink) As String
CreateHyperLink = "<A HREF = '" & HyperLink & "'>'" & HyperText & "'</A>"
End Function
然后在正文中,您只需使用 (我不确定您是否正在预先格式化 HTML,但我会这样做。)
Set oMail = oApp.CreateItem(olMailItem)
With oMail
.To = t
.CC = c
.HTMLBody = "<HTML><BODY><FONT FACE='Calibri'>" & eBody(i) & "</FONT></BODY></HTML>"
.Subject = eSubject(i)
End With
记住! eBody(i)
是仅解析关键字的结果,而不是格式化的结果。由于 TextBox 是一个多信息文本框,因此格式化已为您完成!
我正在尝试使用自定义超链接填充一系列生成的电子邮件,但无法正确生成超链接。 我有一个用户表单,允许创建报告的人在电子邮件正文中输入文本字段。此字段已分配给 Table。
在我的代码中,我正在提取这些字段并针对 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.
中输入整个电子邮件Example Output of Method .htmlBody (Hyperlink is Valid but Missing Format)
可以通过以下方式访问该文件: 'Click here to access the Report ' 请使用过滤器 select 您的...
Example Output of Method .Body (Hyperlink is not Valid but Formated)
可以通过以下方式访问该文件:
<HTML><BODY><A href='http://FILELOCATION'>'Click here to access the Report '</A></BODY></HTML> "
请使用过滤器 select 您的...
有没有办法在 .body 中添加超链接,或者有办法用 .HTMLbody 保持格式?
如果我正确阅读了您的描述,您正在为每个超链接创建一组新的 "HTML" 和 "BODY" 标签。您生成的 HTML 电子邮件中应该只有 1 个 HTML 和 1 个 BODY 标签。
我建议您将 CreateHyperLink 函数更新为:
Function CreateHyperLink(HyperText, HyperLink) As String
CreateHyperLink = "<a href='" & HyperLink & "'>'" & HyperText & "'</a>"
End Function
看看Range in Middle of Email Body。我在那里的回答显示了如何插入现有 .HTMLBody
.
正如乔希所提到的。您必须将整个电子邮件包装在一个 HTML
BODY
中。所以我正在使用 Josh 已经提到的内容,但对您的表单设计进行了一些更改。
第一步。转到表单的设计视图,确保文本框(您输入电子邮件正文的地方)设置为 Rich Text 而不是纯文本。富文本自动将您的数据包装在适当的 DIV
标签中。所以你创建超链接的代码是,
Function CreateHyperLink(HyperText, HyperLink) As String
CreateHyperLink = "<A HREF = '" & HyperLink & "'>'" & HyperText & "'</A>"
End Function
然后在正文中,您只需使用 (我不确定您是否正在预先格式化 HTML,但我会这样做。)
Set oMail = oApp.CreateItem(olMailItem)
With oMail
.To = t
.CC = c
.HTMLBody = "<HTML><BODY><FONT FACE='Calibri'>" & eBody(i) & "</FONT></BODY></HTML>"
.Subject = eSubject(i)
End With
记住! eBody(i)
是仅解析关键字的结果,而不是格式化的结果。由于 TextBox 是一个多信息文本框,因此格式化已为您完成!