如何使用VBA将HTML Outlook邮件导入MS Access
我在互联网上搜索了几个小时,想找到我问题的答案 很长一段时间以来,我知道如何导入邮件,但无法保持HTML正文的格式,就像我手动将正文从OL复制到access表单上的富文本备注字段时所做的那样 字段(olbody)绑定到SQL server表字段olbody(nvarchar(max)),在插入剪贴板内容时可以存储html邮件正文文本 我甚至尝试读取剪贴板中的.HTMLbody属性如何使用VBA将HTML Outlook邮件导入MS Access,html,sql-server,ms-access,Html,Sql Server,Ms Access,我在互联网上搜索了几个小时,想找到我问题的答案 很长一段时间以来,我知道如何导入邮件,但无法保持HTML正文的格式,就像我手动将正文从OL复制到access表单上的富文本备注字段时所做的那样 字段(olbody)绑定到SQL server表字段olbody(nvarchar(max)),在插入剪贴板内容时可以存储html邮件正文文本 我甚至尝试读取剪贴板中的.HTMLbody属性 clp.SetText .HTMLBody clp.PutInClipboard 然后我在字段中使用Ctrl+V手
clp.SetText .HTMLBody
clp.PutInClipboard
然后我在字段中使用Ctrl+V手动粘贴剪贴板的内容,但它不会像HTML邮件那样显示。但是我可以看到所有HTML命令,这些命令应该可以格式化邮件
如果不在访问字段中格式化邮件,内容几乎无法读取,因为正文中没有选项卡、行跳过等
欢迎任何帮助。
谢谢显示HTML的正确方法是使用web浏览器。这意味着:使用web浏览器控件 您可以在加载时以及邮件字段更改时在webbrowser控件中加载HTML 示例代码:
Private Sub Form_Current()
Dim wb As Object
Set wb = MyWebbrowserControl.Object
With wb
.Navigate2 "about:blank"
Do Until .ReadyState = 4 '=READYSTATE_COMPLETE
'This is a somewhat inefficient way to wait, but loading a blank page should only take a couple of milliseconds
DoEvents
Loop
.Document.Open
.Document.Write MemoField.Value
.Document.Close
End With
End Sub
将Memofield替换为mail字段,将MyWebBrowser控件替换为webbrowser控件,这样您就可以开始了
请注意,您可能应该使用Access web浏览器,而不是ActiveX web浏览器。这段代码可以同时使用这两个控件,但是Access web浏览器控件使用了更现代的IE版本,并且没有不可移动的边框。Erik,非常感谢,它可以工作。但我找到了另一个解决办法。我使用剪贴板粘贴解决方案,但没有使用Ctrl+V粘贴,而是通过代码剪贴板粘贴。GetFromClipboard Me.olBody=clipboard.GetText。行距、制表符、备注字段中显示的所有内容,如邮件、execpt字体和字体颜色。所以我把我的sloutin和你的网络控制结合起来,得到我想要的。谢谢!这很好,但请注意,使用完整的HTML,您还可以查看图像、字体、链接以及可能包含在某些类型的邮件(如时事通讯)中的更多内容。根据您处理的邮件类型,它可能相关,也可能无关。Erik,您对图像等的看法是正确的。我可能会将其显示在Webbrowser控件中,但如何使用图像将整个邮件保存在表中??现在每张图片都显示了一个x,这在我的例子中已经足够了,但是有没有其他合适的解决方法呢?这些图片通常是在线链接的。如果图像是嵌入的,你就倒霉了(除非你将邮件另存为文件,然后导入该文件)