2016-07-15 5 views
2


背景:
A前ながら、私はタイトルが示唆するように、私が知っている-to送信イベントアイテムをキャッチするためにそれを使用している、具体的には、Outlookからイベントを取得するためのクラスモジュールを発見本当に送られたかどうかは分かりません。これはクラスモジュールそのものです。私はそれをどのように呼び出すのか覚えていません(後で参照するために保存しましたが、私のメインサブで呼び出す方法を削除しました)。見通しイベントクラスを送る

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 

その後、電子メールを送信するのMyサブに:

Set itmevt.itm = EmailToSend 

しかし、私はクラスでトリガを送信するイベントを取得することはできません。

具体的な質問:
1.クラスを正しく呼び出すにはどうすればよいですか?
2.効率的に送信された値を取得するにはどうすればよいですか(後で解析するためにセルに書きたいと思います)。それを呼び出すサブに価値がありますが、私はそれが最良のアプローチだとは思わない

答えて

1

私はこのクラスはやや偽りです。適切な使用法はSet itmevt.itm = OutApp.CreateItem(0)です。問題は、送信イベントを使用して項目が送信されたかどうかをテストすることにあります。イベントのCancelパラメータに注目してください。 Cancel = Trueを設定すると、電子メールが送信されません。これは、このイベントが完了するまで電子メールが送信されない場合、私たちに通知します。 Sentは常にfalseを返し、Sendイベントからエラーを発生させません。

一方、メールを送信した後でMailItem.Sentを確認すると、The item has been moved or deleted.というエラーがスローされます。我々はそれがなかった場合、メールが送信され、Falseをされた場合はTrueを返します、私たちの電子メールを送信する機能を作成することができることを知って

enter image description here

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

私はあなたに素早い答えを与えることができるかもしれません。 –