受信したメールの件名の文字列により異なるフォルダーへ自動的に添付ファイルを保存するマクロ


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


はじめまして、こんにちは。大変便利に活用させて頂いております。毎日2つの違う件名のメール(添付ファイル付)を受信していて、添付ファイルをそれぞれ違う場所に保存したいのですが、可能でしょうか?



以下のようなマクロで実現できます。
このマクロはメールを受信した際に、KEYWORD1 で指定した文字列が件名に含まれる場合は SAVE_PATH で指定したフォルダーの下にある FOLDER1 で指定したサブ フォルダーに添付ファイルを保存し、KEYWORD2 の文字列の場合は FOLDER2 で指定したサブ フォルダーに添付ファイルを保存します。
KEYWORD1 や FOLDER1 などは適宜変更して使用してください。
なお、このマクロは受信時のイベントで実行されるものであるため、手動で実行はできません。

' ここをトリプルクリックでマクロ全体を選択できます。
' メール受信時に発生するイベント
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Const KEYWORD1 = "検索文字列1"
    Const KEYWORD2 = "検索文字列2"
    Const FOLDER1 = "フォルダー1"
    Const FOLDER2 = "フォルダー2"
    '
    Set objItem = Session.GetItemFromID(EntryIDCollection)
    If objItem.MessageClass = "IPM.Note" Then
        Dim msgItem As MailItem
        Set msgItem = objItem
        If msgItem.Subject Like "*" & KEYWORD1 & "*" Then
            SaveAttachmentsToFolder msgItem, FOLDER1
        End If
        If msgItem.Subject Like "*" & KEYWORD2 & "*" Then
            SaveAttachmentsToFolder msgItem, FOLDER2
        End If
    End If
End Sub
'
' 添付ファイルの保存を行うサブ プロシージャ
Private Sub SaveAttachmentsToFolder(ByVal msgItem As MailItem, ByVal strFolder As String)
     Const SAVE_PATH = "C:\attachments\"
     Dim objFSO As Object ' FileSystemObject
     Dim objAttach As Attachment
     Dim strFileName As String
     Dim c As Integer: c = 1
     '
     Set objFSO = CreateObject("Scripting.FileSystemObject")
     For Each objAttach In msgItem.Attachments
         With objAttach
             strFileName = SAVE_PATH & strFolder & "\" & objAttach.FileName
             While objFSO.FileExists(strFileName)
                 strFileName = SAVE_PATH & strFolder & "\" & Left(.FileName, InStrRev(.FileName, ".") - 1) _
                     & "-" & c & Mid(.FileName, InStrRev(.FileName, "."))
                 c = c + 1
             Wend
             .SaveAsFile strFileName
         End With
     Next
     Set objFSO = Nothing
End Sub

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

受信したメールの件名の文字列により異なるフォルダーへ自動的に添付ファイルを保存するマクロ」への1件のフィードバック

  1. いつも大変参考にさせていただいております。
    こちらのをそのまま使わせていただいておりますが、複数のメールを同時に受信したときに、最後に受信したメールの添付だけが
    フォルダに保存されて残りのメールの添付は保存されませんがなぜでしょうか?

    outlook2013 win7 を使用しています。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中