2012-06-08 2 views
3

SendObject 메서드를 사용하여 전자 메일의 첨부 파일로 보고서를 내보내는 Access 데이터베이스가 있습니다..rtf 현재 전자 메일 본문에 첨부 및 붙여 넣기 내용

첨부 파일을 열고 서식있는 텍스트를 복사하여 생성 된 전자 메일 본문에 붙여넣고 파일을 삭제하면됩니다.

첨부 파일을 제거하고 열 수있는 코드가 있지만 Word 문서의 모든 내용을 복사하여 원본 전자 메일에 붙여 넣는 방법을 잘 모르겠습니다.

도움이 될 것입니다. 좀 더 간단한 방법이 있다면 알려주십시오.

Sub olAttachmentStrip() 
    Dim strFilename As String 
    Dim strPath As String 
    Dim olItem As Outlook.MailItem 
    Dim olAtmt As Outlook.Attachments 
    Dim olInspector As Outlook.Inspector 
    Dim appWord As Word.Application 
    Dim docWord As Word.Document 

    strPath = "C:\temp\" 

    Set olInspector = Application.ActiveInspector 
    If Not TypeName(olInspector) = "Nothing" Then 
    If TypeName(olInspector.CurrentItem) = "MailItem" Then 
     Set olItem = olInspector.CurrentItem 
     Set olAtmt = olItem.Attachments 
      olAtmt.Item(1).SaveAsFile strPath & olAtmt.Item(1).DisplayName 
      strFilename = strPath & olAtmt.Item(1).DisplayName 
      'olAtmt.Item(1).Delete 
    Else 
    MsgBox "Something went horribly wrong." 
    End If 
    End If 

    Set appWord = CreateObject("Word.Application") 
    appWord.Visible = False 
    Set docWord = appWord.Documents.Open(strFilename) 
    Stop '<== This is where I'm stuck! 
    Set docWord = Nothing 
    Set appWord = Nothing 
End Sub 

답변

4

첨부 파일을 추출하는 코드가 이미 있으므로 다음 단계는 파일을 열어 전체 텍스트를 복사하여 현재 이메일에 붙여 넣는 것입니다.

은 ( 이 시도하고 테스트)이 시도 완벽하게 작동,하지만 난 또 하나의 문제가

Option Explicit 

Sub Sample() 
    Dim doc As Object, sel As Object 
    Dim oWord As Object, oDoc As Object, wRng As Object 


    '~~> Establish an EXCEL application object 
    On Error Resume Next 
    Set oWord = GetObject(, "Word.Application") 

    '~~> If not found then create new instance 
    If Err.Number <> 0 Then 
     Set oWord = CreateObject("Word.Application") 
    End If 
    Err.Clear 
    On Error GoTo 0 

    '~~> Open the Attachement 
    Set oDoc = oWord.Documents.Open(FileName:="C:\MyDocument.rtf", ConfirmConversions:=False, _ 
     ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _ 
     PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _ 
     WritePasswordTemplate:="", Format:=0, XMLTransform:="", _ 
     Encoding:=1200) 

    '~~> Get the comeplete text and copy it 
    Set wRng = oDoc.Range 
    wRng.Copy 

    '~~> Close word Doc 
    oDoc.Close 

    '~~> Paste it in active email 
    Set doc = ActiveInspector.WordEditor 
    Set sel = doc.Application.Selection 
    sel.Paste 

    '~~> Clean up 
    Set wRng = Nothing: Set oDoc = Nothing: Set oWord = Nothing 
End Sub 
+0

. 첨부 파일을 지우고 열어 본 코드를 복사하여 원본 전자 메일에 붙여 넣을 수있는 코드가 있지만 전자 메일이 만들어지면 (DoCmd.SendObject acReport) 생성 된 전자 메일이 일반 텍스트로 생성되어 손실됩니다. HTML 형식 지정을 지원하는 전자 메일을 만들 때마다 가지고 있던 서식 지정. 나는 혼란 스럽다. 어떤 도움이나 지시 사항을 주시면 감사하겠습니다. 이 작업을 수행하는 쉬운 방법이 있다면 어떤 방향으로도 좋을 것입니다. 미리 감사드립니다. – CSharp821

+0

나는 MS Access에 정통하지 않습니다. 'DoCmd.SendObject acReport' 당신이 쓰고있는 정확한 구문은 무엇입니까? –

+0

나는 그것을 내 앞에두고 있지 않습니다. 이 코드는 서식이 포함 된 .rtf 문서를 만듭니다. 새 이메일에서 코드를 사용할 때마다 서식이 완벽합니다. 범위에서 Outlook에서 생성 된 일반 텍스트 전자 메일을 붙여 넣을 때마다 .rtf 선택에서 서식이 손실됩니다. 활성 이메일의 형식을 Html로 다시 변경할 수는 있지만, 그것이 최선의 방법인지 확실하지 않습니다. 나는 아침에 구문을 게시 할 것이다. 감사 – CSharp821

관련 문제