2017-12-27 10 views
0

나는 내 질문에 대한 해결책을 찾기 위해 몇 시간 동안 인터넷을 검색 해왔다.VBA를 사용하여 HTML Outlook 메일을 MS Access로 가져 오는 방법

오랫동안 메일을 가져 오는 방법을 알고 있지만 액세스 양식의 서식있는 텍스트 메모 필드에 직접 OL에서 본문을 복사 할 때처럼 HTML 본문의 형식을 유지할 수는 없습니다 .

필드 (olbody)는 SQL Server 테이블 필드 olbody (nvarchar (max))에 바인딩되어 클립 보드의 내용을 삽입 할 때 html 메일 본문 텍스트를 저장할 수 있습니다.

나는 심지어 클립 보드

clp.SetText .HTMLBody 
clp.PutInClipboard 

을에 .HTMLbody 속성을 읽기를 시도하고 내가 직접 현장에서 Ctrl 키 + V를 사용하여 클립 보드의 내용을 붙여, 그러나 다시, 그것은 같은 어떤 공연을하지 않는다 HTML 메일. 그러나 나는 모든 HTML 명령을 볼 수 있는데,이 명령은 메일을 형식화해야합니다.

액세스 필드에서 메일을 형식화하지 않고 탭, 라인 킵 등이 본체에 없으므로 내용을 거의 읽을 수 없습니다.

도움을 환영합니다. 감사합니다.

답변

1

HTML을 표시하는 적절한 방법은 웹 브라우저를 사용하는 것입니다. 즉, 웹 브라우저 컨트롤을 사용하십시오!

로드시 웹 브라우저 컨트롤에서 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 컨트롤과 함께, 당신은 갈 준비가되어 있어야합니다.

ActiveX 웹 브라우저가 아닌 Access 웹 브라우저를 사용해야합니다. 이 코드는 두 가지 모두에서 작동하지만 Access 웹 브라우저 컨트롤은보다 최신 버전의 IE를 사용하며 고정식 테두리가 제공되지 않습니다.

+0

에릭, 정말 고마워. 그러나 주위를 놀고 또 다른 해결책을 찾았습니다. 나는 클립 보드로 솔루션을 고수했지만 Ctrl + V로 붙여 넣지는 않았지만 코드 클립 보드로 붙여 넣었다. linespacing, tabs, 모든 것은 메일, 실행 글꼴 및 글꼴 색상과 같은 메모 필드에 표시됩니다. 그래서 내 sloutin을 귀하의 webcontrol과 결합하여 내가 원하는 것을 얻습니다. 고마워! – mak

+0

괜찮습니다. 전체 HTML을 사용하면 이미지, 글꼴, 링크 및 뉴스 레터와 같은 일부 유형의 메일에 포함될 수있는 많은 콘텐츠를 볼 수 있습니다. 함께 일하는 메일의 종류에 따라 관련성이있을 수도 있고 그렇지 않을 수도 있습니다. –

+0

Erik, 당신은 이미지 등으로 내가 Webbrowser 컨트롤에 표시 할 수 있습니다,하지만 어떻게 테이블에 이미지와 함께 전체 메일을 저장 ?? 지금 당장 모든 이미지는 내 경우에 충분한 x를 보여 주지만 적절한 해결책을 찾기위한 다른 방법이 있습니까 ?? – mak