Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA HTML对象库未分析Outlook MailItem HTMLBody_Vba_Outlook - Fatal编程技术网

VBA HTML对象库未分析Outlook MailItem HTMLBody

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

我试图通过提取会话线程中的最后一条消息来合并邮件。我想保持格式不变,所以我试图获得最后一条消息以及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(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