Msdn フォーラムにあった質問関連でメモを残しておきます。
Outlookでは、
仕分けルールと通知の管理
↓
新しい仕分けルール
↓
自動仕分けウィザード
の「ステップ 1: 処理を選択してください」にある「スクリプト を実行する」でマクロを指定すると、メッセージ受信時に任意のマクロを実行できるのですが、
Sub Test() MsgBox "Hello." End Sub
のようなマクロでは、スクリプト(マクロ)を選択するダイアログに表示されず、実行することができません。
どのようなマクロなら実行できるのかと言えば、下記コードを標準モジュール(ThisOutlookSessionでも可)に貼り付けてみるとよく分かります。
Option Explicit Public Sub MailItemProc1(ByRef Item As Outlook.MailItem) MsgBox Item.Subject, vbSystemModal + vbInformation End Sub Public Sub MeetingItemProc1(ByRef Item As Outlook.MeetingItem) MsgBox Item.Subject, vbSystemModal + vbExclamation End Sub Private Sub MailItemProc2(ByRef Item As Outlook.MailItem) MsgBox Item.Subject, vbSystemModal + vbInformation End Sub Private Sub MeetingItemProc2(ByRef Item As Outlook.MeetingItem) MsgBox Item.Subject, vbSystemModal + vbExclamation End Sub Public Sub MailItemProc3(ByVal Item As Outlook.MailItem) MsgBox Item.Subject, vbSystemModal + vbInformation End Sub Public Sub MeetingItemProc3(ByVal Item As Outlook.MeetingItem) MsgBox Item.Subject, vbSystemModal + vbExclamation End Sub Public Sub MailItemProc4(ByRef Item As Object) MsgBox Item.Subject, vbSystemModal + vbInformation End Sub Public Sub MeetingItemProc4(ByRef Item As Variant) MsgBox Item.Subject, vbSystemModal + vbExclamation End Sub Public Sub MailItemProc5() MsgBox "Hello.", vbSystemModal + vbInformation End Sub Private Sub MeetingItemProc5() MsgBox "Hello.", vbSystemModal + vbExclamation End Sub
上記コードのうち「スクリプトの選択」ダイアログに表示されるのは「MailItemProc1」と「MeetingItemProc1」だけです。
つまり、仕訳ルールで使えるスクリプト(マクロ)は、
- Publicスコープ
- 引数にMailItemかMeetingItemを持つ
- 引数はByRef
上記条件を満たしたもの、ということになります。
詳細については「How to create a script for the Rules Wizard in Outlook」に記載があるのですが、知っていないと「なんで選択ダイアログに出てこないの?」と、引っ掛かってしまいますね。
この記事へのコメントはありません。