2010-06-07 2 views
2

VB의 Word 2007 문서 텍스트에서 Outlook 2007의 전자 메일 본문을 생성하려고합니다. Word 및 Outlook 개체 라이브러리에 액세스 할 수 있으며 Word 문서에서 문자열을 가져 와서 Outlook에 쓸 수는 있지만 Word 문서의 서식을 그대로 유지해야합니다..NET Word에서 Outlook의 전자 메일 텍스트 생성

목적은 사용자가 워드 문서를 편집 할 수있게하고 내 프로그램에서 생성하는 이메일을 항상 문서와 동기화되도록하는 것입니다.

누구든지이 작업을 수행하는 방법을 알고 있습니까?

답변

1

마침내 나는 만족스럽게이 작업을 수행 할 수있었습니다. 몇 가지 일을했기 때문에 내가 결국 사용했던 것을 나눌 것이라고 생각했습니다. 그냥 간단한 VBScript를에서 첨부 파일로 워드 문서를 보내는 공상 경우

Private Sub CreateEmail() 
    Dim wordApp As Word.ApplicationClass = New Word.ApplicationClass() 

    Dim file As Object = "PATH TO WORD DOCUMENT" 

    Dim nullobj As Object = System.Reflection.Missing.Value 

    Dim doc As Word.Document = wordApp.Documents.Open(_ 
       file, nullobj, nullobj, nullobj, nullobj, nullobj, _ 
       nullobj, nullobj, nullobj, nullobj, nullobj, nullobj) 
    doc.ActiveWindow.Selection.WholeStory() 
    doc.ActiveWindow.Selection.Copy() 
    Dim data As IDataObject = Clipboard.GetDataObject 
    body = data.GetData(DataFormats.Html, True).ToString 
    Dim delimiter As Char() = "<".ToCharArray() 
    body = "<" + (body.Split(delimiter, 3))(2) 
    doc.Close() 
    My.Computer.Clipboard.SetText(body) 
    SendMail() 
End Sub 

Private Sub DisplayMail() 
    Dim Errmsg As String 

    Try 
     If Len(mailto) = 0 Then 
      Errmsg = "You must designate a recipient." 
      MsgBox(Errmsg, MsgBoxStyle.Exclamation, "Error") 
      Exit Sub 
     End If 

     If GetOutlook() = True Then 
      'Set the properties of the mail item 
      mItem = CType(mOutlookApp.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem) 
      mItem.Recipients.Add(mailto) 
      mItem.BCC = bcc 
      mItem.Subject = Me.subject 
      mItem.HTMLBody = body 

      'Save email to Outlook draft folder of the user 
      mItem.Display() 
     End If 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 
+0

-1 코드 조각을 반올림합니다. 그다지 효율적이지 않은데, 1) 당신이 할 필요가 없을 때 Word의 인스턴스를 열고, 2) [WholeStory]를 사용하여 [머리말/꼬리말]이 아닌 것을 고려하지 않고 3) Windows 클립 보드를 사용하고 있으므로 복원하지 않고 이미있는 모든 항목을 비울 수 있습니다. –

0

다음은 Outlook VBA에서이 작업을 수행하는 방법의 예입니다 (Word OM에 대한 참조 추가). 이것을 사용하여 .NET으로 포팅 할 수 있습니다.

Sub CreateMail() 
    Dim filePath As String 
    filePath = """C:\\Users\\Me\\Desktop\\test.docx""" 
    InsertBodyTextInOutlookWordEditor filePath 
End Sub 

Sub InsertBodyTextInOutlookWordEditor(filePath As String) 
    Dim myMail As Outlook.MailItem 
    Dim myInspector As Outlook.Inspector 
    Dim wdDoc As Word.Document 
    Dim wdRange As Word.Range 

    On Error Resume Next 
    Set myMail = Application.CreateItem(olMailItem) 
    myMail.Subject = "Here's the latest..." 
    myMail.Display 
    Set myInspector = myMail.GetInspector 
    Set wdDoc = myInspector.WordEditor 
    If Not (wdDoc Is Nothing) Then 
     Set wdRange = wdDoc.Range(0, wdDoc.Characters.Count) 
     wdRange.Fields.Add Range:=wdRange, Type:=wdFieldEmpty, Text:= _ 
     "INCLUDETEXT " & filePath, _ 
     PreserveFormatting:=True 
    End If 
End Sub 
1

큰 물건, ..., 여기

Dim outlook, nameSpace, mailItem 

Set outlook = WScript.CreateObject("Outlook.Application") 
Set nameSpace = outlook.GetNameSpace("MAPI") 
Set mailItem = outlook.CreateItem(0) 

mailItem.Recipients.Add "[email protected]" 
mailItem.Subject = "Mail Subject" 
mailItem.Body = "The body of the mail item" & vbcrlf & _ 
     "Put whatever you want in here!" 

mailItem.Attachments.Add("\\FULLUNC\PATH\TO Your File\Called\Whatever.doc").DisplayName = "Attached File" 

mailItem.Send 

nameSpace.Logoff 
관련 문제