VBA HTML对象库未分析Outlook MailItem HTMLBody
我试图通过提取会话线程中的最后一条消息来合并邮件。我想保持格式不变,所以我试图获得最后一条消息以及html。我是这样引用MicrosoftHTML对象库的VBA HTML对象库未分析Outlook MailItem HTMLBody,vba,outlook,Vba,Outlook,我试图通过提取会话线程中的最后一条消息来合并邮件。我想保持格式不变,所以我试图获得最后一条消息以及html。我是这样引用MicrosoftHTML对象库的 Dim mi As MailItem Set mi = ActiveExplorer.Selection.Item(1) Dim bhtml As HTMLBody Set bhtml = mi.HTMLBody Dim vResult, vLine, sResult As String vResult = Split(lastMessag
Dim mi As MailItem
Set mi = ActiveExplorer.Selection.Item(1)
Dim bhtml As HTMLBody
Set bhtml = mi.HTMLBody
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>")
这将导致类型不匹配错误 MailItem.HTMLBody属性返回一个字符串,而不是HTLBody对象。我使用正则表达式从
oMailitem.body
属性返回的字符串中提取最后一条消息。下面是模式(.*(=(From:..*\nSent:..*\nTo:))
这是一个+ve前瞻我使用了match集合中的第一个项并将其设置在match对象中,然后提取了最后一条消息,类似于左函数lastmessage=left(oMailItem.body,oMatch.firstindex)
然后我像这样把它用html包起来
Dim mi As MailItem
Set mi = ActiveExplorer.Selection.Item(1)
Dim bhtml As HTMLBody
Set bhtml = mi.HTMLBody
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>")
Dim vResult、vLine、sResult作为字符串
vResult=Split(最后一条消息,vbCrLf)
对于vResult中的每条vLine
sResult=sResult&“”和CStr(vLine)
下一个
styledLastMessage=“”&sResult&“”
最后附加到邮件中,我想像这样合并它
Dim mi As MailItem
Set mi = ActiveExplorer.Selection.Item(1)
Dim bhtml As HTMLBody
Set bhtml = mi.HTMLBody
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>")
Dim miBody()作为字符串
miBody=Split(omalitem.HTMLBody,“”)
miBody(1)=“”&styledLastMessage&“”&“-----”&vbCrLf&miBody(1)
omalitem.HTMLBody=Join(miBody,“”)
注意:在
之后,第一条消息开始。第2行设置mi
时出错吗?您不应该使用ActiveExplorer
。您不能保证该项目是邮件项目
。您需要将其加载到HTMLDocument对象中。感谢您的建议,但我找不到要用mi.HTMLBody
设置的属性。以下是我更新的代码Dim bhtml作为HTMLDocument set bhtml=新的HTMLDocument bhtml.?=mi.HTMLBody