2013-12-12 3 views
1

다음과 같이 매크로를 사용하여 Excel 통합 문서를 보내고 있습니다. 빈 전자 메일 주소를 사용하여 Outlook에서 전자 메일을 가져 와서 사용자가 전자 메일 주소를 입력 할 수있게합니다. 그러나 전자 메일을 보내지 않고 보내지 않으면 Excel에서 사용자가 Outlook에서 다른 작업을 수행 할 수 없으며 첨부 파일을 열어서 확인합니다. 전자 메일이 처리 될 때까지 파일을 닫지 않으므로이 루프에서 멈 춥니 다. 이 문제를 어떻게 해결할 수 있습니까?Excel 전자 메일을 보낼 때까지 Outlook을 보낼 때 - 오류 처리?

TempFilePath = Environ$("temp") & "\" 
TempFileName = "The File Name" 
FileExtStr = ".xlsx" 

With TheWorkbook 
.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum 
On Error Resume Next 
For I = 1 To 3 
.SendMail "", _ 
    "This is the Subject line" 
    If Err.Number = 0 Then Exit For 
Next I 
On Error GoTo 0 
.Close SaveChanges:=False 
End With 
+0

왜 'I = 1의 3'하기를 참조하십시오? –

답변

4

대신 .SendMail 왜 Outlook에서 latebind를 사용하지 않습니까? 이렇게하면 Excel은 작업이 완료 될 때까지 기다릴 필요가 없습니다.

이 예

Option Explicit 

Sub Sample() 
    Dim OutApp As Object 
    Dim OutMail As Object 
    Dim i As Long 

    Set OutApp = CreateObject("Outlook.Application") 
    Set OutMail = OutApp.CreateItem(0) 

    With ThisWorkbook 
     ' 
     '~~> Do Something 
     ' 

     For i = 1 To 3 
      Set OutMail = OutApp.CreateItem(0) 

      With OutMail 
       .Subject = "This is the Subject line" 
       .Body = "Hello World" 
       .Attachments.Add TempFilePath & TempFileName & FileExtStr 

       '~~> Show the email 
       .Display 
      End With 
     Next i 
    End With 
End Sub 
+0

감사합니다.이 작업은 정상적으로 수행되었습니다. 단지 .Attachments.Add TempFilePath & TempFileName & FileExtStr 줄을 추가해야했습니다. 한 번 보낸 파일을 죽일 선이 있었지만 전자 메일이 전송 될 때까지 Excel이 기다려야한다고 추측합니다. 전자 메일을 보낸 사람은 단순히 해당 파일을 닫을 수 있습니다. – whispersan

관련 문제