複数の NewMailEx のマクロを統合する方法


コメントにて以下のご要望をいただきました。


つい先日よりOutlookを使用し始めて、こちらにお邪魔して勉強させて頂いております。
(環境:WIN10, Office365)
さて、「名前が適切ではありません」のコンパイルエラーで困っております。
マクロは例の「豆腐メール」受信後の削除、及びメール受信後の添付エクセルファイルを
デスクトップへ保存する の2種類のマクロを上下並べて記述させましたところ、
上述のエラーが出ております。
具体的には、Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
のところが、2種類のマクロ故に2重になっていることでのエラーだと思いますが、その回避方法を
ご教示お願いしたいと存じます。いろいろ試しましたが、初心者故に対応が不明です。
(豆腐メール用マクロは、サブプロシージャがなく、もう一方はそれがあることで、混乱しているのかも知れません) どうぞよろしくお願い致します。


メール受信時のマクロについては Application_NewMailEx というサブ プロシージャで記述しますが、VBA では同じ名前のサブ プロシージャを複数登録することはできません。
そのため、それぞれの Application_NewMailEx という名前を別のものに変更し、Application_NewMailEx では変更した名前のサブ プロシージャを呼び出す必要があります。

例えば、「件名、本文、差出人が空白のメールを受信時に削除するマクロ」の Application_NewMailEx を Application_NewMailExForBlankMail と変更する場合、以下のような記述をします。
元のサブ プロシージャでは Application_NewMailEx 自身を呼び出しているので、そちらの名前も変更する必要がある点に注意してください。

Private Sub Application_NewMailExForBlankMail(ByVal EntryIDCollection As String)
    Dim objMsg
    If Instr(EntryIDCollection,",") = 0 Then
        Set objMsg = Session.GetItemFromID(EntryIDCollection)
        If objMsg.Subject = "" And objMsg.Body = "" And objMsg.SenderName = "" Then
            objMsg.Unread = False ' 既読にする
            objMsg.Delete ' 削除する
        End If
    Else
        Dim strIDs
        Dim i
        strIDs = Split(EntryIDCollection, ",")
        For i = LBound(strIDs) To UBound(strIDs)
            Application_NewMailExForBlankMail strIDs(i)
        Next
    End If
End Sub

同様に、メール受信後の添付エクセルファイルをデスクトップへ保存するマクロの Application_NewMailEx  も Application_NewMailExForSaveToDesktop に変更した場合、Application_NewMailEx 自体は以下のように記述します。

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Application_NewMailExForBlankMail EntryIDCollection
    Application_NewMailExForSaveToDesktop EntryIDCollection
End Sub

もしほかにも追加したい受信時のマクロがある場合は、そちらについても名前を変更して Application_NewMailEx の中に追加してください。

マクロの登録方法やメニューへの追加について

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中