2

私のコードは、基本的な件名、本文、添付ファイルを含むメッセージを表示します。次に、ユーザーはメッセージを手動で更新およびカスタマイズし、送信する必要があります。メールが送信されたとき (if) を記録したい。これは可能ですか、それともヒントですか?

私の環境は Office 2007 で、Excel ベースのマクロが Outlook に接続されています。

[抜粋]

Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem

Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon

Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail
    .To = Email                 '.CC = 
    .Subject = Subj
    .BodyFormat = olFormatHTML
    .Body = Msg                 '.HTMLBody = Msg
    If Not FileAttach = vbNullString Then .Attachments.Add (FileAttach) 
    .Display
End With
4

1 に答える 1

4

これは、Outlook.MailItem クラスの _Send イベントを使用して完全に可能です。

私の使い方では、EMail Watcher というクラスを作成します。そのため、電子メールを作成して .Display を実行するときに、新しい EMailWatcher オブジェクトを作成し、その電子メールの送信を監視し、発生したら報告するように指示します。

これが私が使用するクラスです。基本的に、オプションで BoolRange を設定して、ユーザーが電子メールを送信した場合に Excel の範囲が True で更新されるようにすることもできます。また、メールの送信時にクラスで Excel の範囲を更新することもできます。

Public BoolRange As Range
Public DateRange As Range
Public WithEvents TheMail As Outlook.MailItem


Private Sub TheMail_Send(Cancel As Boolean)
    If Not BoolRange Is Nothing Then
        BoolRange.Value = True
    End If
    If Not DateRange Is Nothing Then
        DateRange.Value = Now()
    End If
End Sub

そして、これが私がそれを使用する方法です:

With oMail
    .To = addr
    .Subject = "CCAT eVSM Utilities License Code"
    .Body = "Message body"
    .Display
End With
Set CurrWatcher = New EmailWatcher
Set CurrWatcher.BoolRange = Range("G12")
Set CurrWatcher.TheMail = oMail

うまくいけば、それは役に立ちます...

于 2010-03-29T19:43:36.947 に答える