如何使用VBA将HTML Outlook邮件导入MS Access

如何使用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手

我在互联网上搜索了几个小时,想找到我问题的答案

很长一段时间以来,我知道如何导入邮件,但无法保持HTML正文的格式,就像我手动将正文从OL复制到access表单上的富文本备注字段时所做的那样

字段(olbody)绑定到SQL server表字段olbody(nvarchar(max)),在插入剪贴板内容时可以存储html邮件正文文本

我甚至尝试读取剪贴板中的.HTMLbody属性

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,这在我的例子中已经足够了,但是有没有其他合适的解决方法呢?这些图片通常是在线链接的。如果图像是嵌入的,你就倒霉了(除非你将邮件另存为文件,然后导入该文件)