2016-07-15 2 views
2


배경 :
전에 동안, 나는 제목이 암시로, 내가 아는 -to 보내기 이벤트 항목을 잡기 위해 그것을 사용하고, 특히, 전망에서 이벤트를 얻을 수있는 클래스 모듈 발견 그것이 실제로 보내 졌는지 아닌지 -. 이것은 클래스 모듈 자체입니다. 나는 그것을 어떻게 사용했는지 기억할 수 없다. (나는 나중에 참조 용으로 저장했지만, 내 메인 서브에서 호출하는 방법을 삭제했다.)전망 이벤트 클래스 보내기

Option Explicit 
Public WithEvents itm As Outlook.MailItem 
Private Sub itm_Send(Cancel As Boolean) 
    Dim blnSent As Boolean 
    On Error Resume Next 
    blnSent = itm.Sent 
    If Err.Number = 0 Then 
     Debug.Print "Email not sent" 
    Else 
    Debug.Print "Email sent") 
    End If 
End Sub 

문제 : 내가 이메일을 보내는의 내 부에 전화하는 방법을 잊어
. 나는 상단에 다음과 같은 선언을 시도 :

Dim itmevt As New CMailItemEvents 
Public EmailToSend As Outlook.MailItem 

그런 다음 내 하위에 그 이메일을 보내는 것 :

Set itmevt.itm = EmailToSend 

그러나, 나는 수업 시간에 트리거 전송하는 이벤트를 얻을 수 없습니다.

특정 질문 :
1. 클래스를 올바르게 호출하려면 어떻게해야합니까?
2. 값을 보내거나 효율적으로 보내지 못하게하는 방법 (나중의 분석을 위해 셀에 쓰고 싶습니다. -sent/not sent-) 공개 함수를 구문 분석하여 다시 가져올 수 있다고 생각했습니다. 그걸 부르는 하위에게 가치가 있지만, 나는 그것이 최선의 접근 방법이라고 생각하지 않는다.

답변

1

나는 운동 할 수 있었기 때문에이 클래스는 다소 가짜 다. 적절한 사용법은 Set itmevt.itm = OutApp.CreateItem(0)입니다. 문제는 Send 이벤트를 사용하여 항목이 전송되었는지 여부를 테스트하는 데 있습니다. 이벤트의 Cancel 매개 변수를 확인하십시오. Cancel = True을 설정하면 전자 메일이 전송되지 않습니다. 이 이벤트가 완료 될 때까지 전자 메일이 보내지지 않으면 알려줍니다. Sent는 항상 false를 반환하고 Send 이벤트에서 오류를 발생시키지 않습니다.

반면에 메일을 보낸 후 MailItem.Sent를 테스트하면 The item has been moved or deleted. 오류가 발생합니다.

enter image description here

우리가 이메일을 보낸 후이 아니었다면 거짓 경우 True를 반환합니다 우리의 이메일을 보내드립니다 함수를 만들 수 있다는 것을 알고.

Function SendEmail(addressTo As String, addressCC As String, Subject As String, HTMLBody As String) As Boolean 
    Dim OutApp As Object 
    Set OutApp = CreateObject("Outlook.Application") 

    With OutApp.CreateItem(0) 
     .To = addressTo 
     .CC = addressCC 
     'OutMail.BCC = "" 
     .Subject = Subject 
     .HTMLBody = HTMLBody 
     .Send 
     On Error Resume Next 

     Call .Sent 

     SendEmail = Err.Number <> 0 

     If Err.Number = 0 Then 
      Debug.Print "Email not sent" 
     Else 
      Debug.Print "Email sent" 
     End If 

     On Error GoTo 0 

    End With 



    Set OutApp = Nothing 

End Function 
+0

좋은 생각으로 보입니다. 테스트를 해본 후 피드백이 작동하면 – Sgdva

+0

효과가 있습니다! 그러나 나는 새로운 질문을해야한다고 생각한다. 왜냐하면 나는 그것으로 작업하는 동안 어떤 것을 이해하지 못했기 때문이다. – Sgdva

+0

빠른 답변을 드릴 수 있습니다. –