【问题标题】:VBA HTML Object Library is not parsing Outlook MailItem HTMLBodyVBA HTML 对象库不解析 Outlook MailItem HTMLBody
【发布时间】:2023-03-18 21:45:01
【问题描述】:

我正在尝试通过提取对话线程中的最后一条消息来合并邮件。我想保持格式不变,所以我试图将最后一条消息与 html 一起获取。我像这样引用 Microsoft HTML 对象库

Dim mi As MailItem
Set mi = ActiveExplorer.Selection.Item(1)
Dim bhtml As HTMLBody
Set bhtml = mi.HTMLBody

这是一个类型不匹配的错误。

【问题讨论】:

  • 在您设置mi 的第2 行是否出错?你不应该使用ActiveExplorer。您不能保证该项目是MailItem

标签: vba outlook


【解决方案1】:

MailItem.HTMLBody 属性返回一个字符串,而不是一个 HTLBody 对象。

【讨论】:

  • 您需要将其加载到 HTMLDocument 对象中。
  • 感谢您的建议,但我找不到使用mi.HTMLBody 设置的属性这是我更新的代码Dim bhtml As HTMLDocument Set bhtml = New HTMLDocument bhtml.? = mi.HTMLBody
【解决方案2】:

我使用正则表达式从oMailitem.body 属性返回的字符串中提取最后一条消息。这是模式(.*(?=(From:.*\nSent:.*\nTo:))) 这是一个+ve 向前看我使用了匹配集合中的第一个项目并将其设置在匹配对象中,而不是像这样lastmessage = Left(oMailItem.body,oMatch.firstindex)

比我这样用html包装起来

Dim vResult, vLine, sResult As String
vResult = Split(lastMessage, vbCrLf)
For Each vLine In vResult
    sResult = sResult & "</p><p>" & CStr(vLine)
Next
styledLastMessage = "<p>" & sResult & "</p>"

最后附加到我想像这样合并的邮件中

Dim miBody() As String
miBody = Split(oMailItem.HTMLBody, "<div class=WordSection1>")
miBody(1) = "<p>" & styledLastMessage & "</p>" & "-------" & vbCrLf & miBody(1)
oMailItem.HTMLBody = Join(miBody, "<div class=WordSection1>")

注意:&lt;div class=WordSection1&gt; 之后第一条消息开始。

【讨论】:

    猜你喜欢
    • 2016-03-22
    • 2015-12-06
    • 2017-02-16
    • 2013-04-15
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    相关资源
    最近更新 更多