2017-12-27 7 views
0

私の質問に対する解決策を見つけるために何時間もインターネットを検索してきました。VBAを使用してHTML形式のOutlookメールをMS Accessにインポートする方法

私は長い間メールをインポートする方法を知っていますが、アクセスフォームのリッチテキストメモフィールドに手動でOLから本文をコピーするときにできるようなHTML本体の形式を保持できません。

フィールド(olbody)は、SQLサーバーテーブルフィールドolbody(nvarchar(max))にバインドされ、クリップボードの内容を挿入するとhtmlメール本文テキストを格納できます。

私もクリップボード

clp.SetText .HTMLBody 
clp.PutInClipboard 

で.HTMLbodyプロパティを読み取ろうとしましたし、私は手動でフィールドにはCtrl + Vでクリップボードの内容を貼り付けますが、再び、それは次のように何のショーをアップしませんHTMLメール。しかし、私はすべてのHTMLコマンドを見ることができ、それはメールをフォーマットするべきです。

アクセスフィールドにメールを作成せずに、タブ、ラインキットなどが本体にないため、内容がほとんど判読できません。

助けてください。 ありがとう

答えて

1

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を交換し、あなたのWebBrowserコントロールとMyWebbroserControl、あなたが行く準備ができなければなりません。

ActiveX Webブラウザではなく、Access Webブラウザを使用することをお勧めします。このコードは両方で動作しますが、Access Webブラウザコントロールはより現代的なバージョンのIEを使用しますが、リムーバブルではありません。

+0

エリック、ありがとう、それは動作します。しかし、私は別の解決策を見つけた。私はクリップボードを使ってソリューションに固執しましたが、Ctrl + Vで貼り付けるのではなく、コードclipboard.GetFromClipboardで貼り付けました。 Me.olBody = clipboard.GetText。 linespacing、tabs、すべては、メール、execptフォント、およびフォントの色のようにメモフィールドに表示されます。だから私はあなたのwebcontrolと私のsloutinを結合し、私が欲しいものを得る。どうも! – mak

+0

これは問題ありませんが、フルHTMLでは画像、フォント、リンク、ニュースレターなど一部のメールに含まれる可能性のあるコンテンツを表示することもできます。あなたが働いているメールの種類によっては、関連性があるかもしれません。 –

+0

Erik、あなたはイメージなどがあればいいですか?Webbrowserコントロールで表示するかもしれませんが、メール全体をテーブルに保存する方法はありますか?今のところ、すべての画像にxが表示されますが、これは私の場合は十分ですが、適切な解決方法がありますか? – mak

関連する問題