2014-02-24 2 views
1

Outlook에서 Access에서 MailItem.Send 이벤트를 잡을 수있는 방법을 찾으려고합니다. 개체를 설정하고 제대로 작동하는 클래스를 만들었지 만 이벤트 처리기가 아무 것도하지 않는 것처럼 보입니다.Outlook MailItem 처리 Access에서 이벤트 보내기

여기에 내가 만든 클래스 (OutlookHandler 이름)입니다 :

Public Function test() 

    Dim ol As New OutlookHandler 

     With ol.msg 
      .To = "[email protected]" 
      .Subject = "outlook event test" 
      .Display 
     End With 


End Function 

내가 test 실행, 이메일이 생성 : 여기

Public WithEvents app As Outlook.Application 
Public WithEvents msg As Outlook.MailItem 


Private Sub Class_Initialize() 

    Set app = CreateObject("Outlook.Application") 
    Set msg = app.CreateItem(olMailItem) 

End Sub 


Private Sub msg_Send(Cancel As Boolean) 

    MsgBox "Message Sent!" 

End Sub 

가 그리고 내가 그 클래스의 인스턴스를 생성하는 기능입니다 표시합니다. 전자 메일을 보내면 전자 메일은 전송되지만 메시지 상자는 생성되지 않습니다. 내가 뭘 놓치고 있니?

답변

2

는이 방법으로 ol variable 공개로 설정해야 :

Dim ol As OutlookHandler 
Public Function test() 

    'Dim ol As New OutlookHandler 
    Set ol = New OutlookHandler 

     With ol.msg 
      .To = "[email protected]" 
      .Subject = "outlook event test" 
      .Display 
     End With 


End Function 
+0

완벽한, 감사합니다 만. – Mike

+0

나는 'ol 변수'가 실제로 공개되어야한다고 생각하지 않습니다. 희미 해지면 새로운 인스턴스로 설정해야하지만, 테스트 함수 안에서 희미해질 수 있습니다. – HelloW

+0

@HelloW -'test' 안에'Dim ol'이 있다면 그것은 글로벌이 아니며' 테스트가 완료되었습니다. 범위를 벗어나면 모든 이벤트에 응답 할 수 없습니다. –

관련 문제