2017-03-15 13 views
-1

同僚は内部電子メールのためにSlackの使用を強化する素晴らしい考えを持っていました。ユーザーが内部メールを送信しようとしているときに表示されるカスタムポップアップについて考えました。このメッセージには、「内部通信のために余裕を持ってください。まだ送信してもよろしいですか?」と表示されます。Outlook:電子メールを送信する前のロジック付きのカスタムポップアップ

私はVBAでApplication.ItemSendイベントを使用してポップアップをトリガすることを考えました。 私はVBAでの多くの経験を持っていないが、私はそのスニペットは私が始めるが判明:

Public WithEvents myOlApp As Outlook.Application 

Public Sub Initialize_handler() 

Set myOlApp = Outlook.Application 

End Sub 



Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean) 

Dim prompt As String 

prompt = "Are you sure you want to send " & Item.Subject & "?" 

If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then 

Cancel = True 

End If 

End Sub 

すべてのヘルプは高く評価されます。

+0

に行くように、質問は何ですか? – Comintern

+0

キャンセルパラメータは "ByRef"と宣言する必要があります。 –

答えて

1

あなたが見つけたスニペットは完璧で、WithEventsインスタンスプロパティについて話しています。標準モジュールの中で宣言することはできません。あなたは、アプリケーションレベルのイベントをフックするために、クラスやThisOutlookSessionクラスを使用


の内側に配置する必要がありますどちらのお勧めの方法です。しかし、あなたのステートメントを考えて私はVBAで多くの経験を持っていないここでは1つのクラスの少ない方法です。


しかし、あなたの要件については、あなたがする必要があるすべてはThisOutlookSessionApplication_ItemSend内にコードを入れています。こうすることで、クラスを作成して起動時にクラスを初期化することを避けることができます。

Option Explicit 

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 
    Dim prompt As String 

    prompt = "Are you sure you want to send " & Item.Subject & "?" 

    If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then 
     Cancel = True 
    End If 
End Sub 

(注)このコードは、ThisOutlookSession

enter image description here

関連する問題