2017-12-27 1033 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

相關問題