2017-11-23 7 views
1

친구에게 VBA를 사용하여 코드를 개발하도록 돕고 있습니다. 랩톱에서이 코드를 성공적으로 실행했지만 코드를 컴퓨터에 복사 할 때 오류가 발생했습니다. 다른 컴퓨터에서 이메일을 전송할 때 코드를 실행할 수 없습니다.

Sub Test() 

    Call sendingEmailWithChecklist("Book1.xlsm") 

End Sub 

Sub sendingEmailWithChecklist(workbookName As String) 

    Dim recipient As String 
    Dim cc As String 
    Dim subject As String 
    Dim body As Range 
    Dim greetings As String 
    Dim message As String 
    Dim signature As String 
    Dim ebody As String 

    Dim olApp As Outlook.Application 
    Dim olInsp As Outlook.Inspector 
    Dim wdDoc As Word.Document 
    Dim olEmail As Outlook.MailItem 
    Dim worksheetName As String 
    Dim content As Range 

    Set olApp = New Outlook.Application 
    Set olEmail = olApp.CreateItem(olMailItem) 

    Sheet2.Activate 

    recipient = Range("B3").Value 
    cc = Range("B4").Value 
    subject = Range("B5").Value 

    greetings = Range("B6").Value 
    message = Range("B7").Value 

    ebody = greetings & vbNewLine & vbNewLine & message & vbNewLine 

    signature = Range("B8").Value 

    'Workbooks(workbookName).Activate 
    worksheetName = "Sheet1" 


    With olEmail 
     .Display 

     .To = recipient 
     .cc = cc 
     .subject = subject 

     Set olInsp = .GetInspector 
     Set wdDoc = olInsp.WordEditor 

     Workbooks(workbookName).Worksheets(worksheetName).Activate 

     Workbooks(workbookName).Worksheets(worksheetName).Cells.Copy 

     'Range("A1:F17").Select 
     'Selection.Copy 

    End With 

    With olEmail 

     .Display 
     wdDoc.Range(1, 1).Paste 
     wdDoc.Range.InsertBefore ebody 

     '.Send 


    End With 

End Sub 

wdDoc.Range(1,1).Paste

그녀의 오류였다

여기 내 코드입니다. 우리는 도구에서 동일한 참조를 선언했지만 오류는 여전히이 줄에 있습니다. 컴퓨터에서 실행되지 않는 이유는 무엇입니까?

추신. 그녀는 HTMLbody을 사용하고 싶지 않습니다.

+0

왜 'olEmail이 있습니까?' – 0m3r

+0

이미 olEmail과 함께 1 개를 삭제했지만 오류가 수정되지 않았습니다. –

+0

@lemaster가 [wdDoc.Range.Paste'로 변경하면 코드가 제대로 작동하지 않습니다. [https://stackoverflow.com/a/47446571/2685412] 또한 복사 된 범위 앞에'ebody '을 붙여 넣습니다. '우리가 원하는 결과를주지 못했다. ' 문제와 오류에 대해 구체적으로 설명해주십시오. – L42

답변

1

대신

wdDoc.Range(1, 1).Paste 

이 더 당신이 말씀 Selection 개체를 사용할 수 있습니다 당신이 메일의 본문에 데이터를 붙여 방식 (표현)을 제어하려면

wdDoc.Range.Paste 
+0

내 ebody의 텍스트가 내 범위의 첫 번째 셀에 붙여졌습니다. –

0

시도 Range 대신. 예 :

wdDoc.Application.Selection.PasteAndFormat wdFormatOriginalFormatting 

복사 된 항목을 원래 형식으로 붙여 넣습니다.
예상 결과에 따라 다른 PasteAndFormat 옵션을 선택할 수 있습니다.

+0

여전히 오류가 발생했습니다. –

+0

@RouellaMayGabineteAmponin 어떤 오류 및 줄이 있습니까? 해당 라인의 – L42

+0

. wdDoc.Application.Selection.PasteAndFormat wdFormatOriginalFormatting –