2017-12-27 597 views
0

我一直在网上搜索几个小时以找到解决我的问题的方法。如何使用VBA将HTML Outlook邮件导入到MS Access中

我知道如何长时间导入邮件,但无法像手动将OL从主体复制到访问表单上的Rich-text备忘录字段时那样保留HTML主体的格式。

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

我甚至试过在剪贴板

clp.SetText .HTMLBody 
clp.PutInClipboard 

阅读.HTMLbody属性,然后我手动粘贴在该领域使用Ctrl + V将剪贴板中的内容,但再次,它没有显示像HTML邮件。但是我可以看到所有的HTML命令,它们应该格式化邮件。

没有在访问字段中格式化邮件,内容几乎是不可读的,因为没有标签,lineskip等等。

任何帮助欢迎。 谢谢

回答

1

显示HTML的正确方法是使用Web浏览器。这意味着:使用网络浏览器控制!

您可以在加载时在浏览器控件中加载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与您的邮件域,MyWebbroserControl与WebBrowser控件,你应该准备好了。

请注意,您可能应该使用Access Web浏览器,而不是ActiveX Web浏览器。此代码可与两者兼容,但Access Web浏览器控件使用更现代的IE版本,并且不带有不可移动的边框。

+0

Erik,非常感谢,它的工作原理。但是玩耍我找到了另一个解决方案。我坚持使用剪贴板的解决方案,但没有粘贴Ctrl + V,但通过代码剪贴板.GetFromClipboard Me.olBody = clipboard.GetText。 linepacing,制表符,所有内容都显示在备忘录字段中,如邮件,执行字体和字体颜色。所以我把我的sloutin和你的webcontrol结合起来,得到我想要的。谢谢! – mak

+0

这很好,但请注意,使用完整的HTML,您还可以查看图像,字体,链接以及可能包含在某些类型的邮件(如新闻稿)中的更多内容。根据您使用的邮件类型不同,它可能相关也可能不相关。 –

+0

Erik,你是对的图像等我可能会显示它在Webbrowser控件,但如何保存整个邮件的图像在表中?现在每个图像都显示一个x,这在我的情况下是足够的,但是有没有适当的解决方案的另一种方法? – mak

相关问题