【Outlook VBA】受信したメールの添付ファイルを指定フォルダへ保存する

Outlookの受信用フォルダを対象に添付ファイルを取り出したい場合はないでしょうか。

例えば月次ごとにフォルダが分かれていて、該当月フォルダの添付資料を取り出したいという時です。

そんな時、クリック一発でフォルダ内にある添付ファイルが取り出せたら効率がよいですよね。

今回は受信メールフォルダのさらにサブフォルダにあるメールの添付ファイルを指定フォルダへ保存する方法を紹介します。



添付ファイル付きメールを格納するフォルダを作成する

以下のように第二階層目に添付用フォルダを作り、そのフォルダを対象に添付ファイル取り出し処理を行います。


こんな感じです。

続いてマクロを実装しましょう。


マクロを設置する下準備をする。

以下を参考にVBAコードを配置する場所を表示させます。

Outlook VBAをはじめよう!



マクロを登録する

「開発」タブ>「Visual Basic」を押します。

「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] > [ThisOutlookSession] を開きます。

右のコードエリアへ、以下のコードを貼り付けて保存します。

Sub 添付ファイル保存()

    Dim objInbox As Object
    Dim objFolder As Object
    Dim strPath As String
    Dim i As Long
     
     
    Set objInbox = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    
    '添付ファイルがあるメールのフォルダを指定します。2階層以上ある場合は「.Folders.Item(<フォルダ名>)」を追加してください。
    Set objFolder = objInbox.Folders.Item("1.サブフォルダ").Folders.Item("1-1.サブフォルダ")
    
    '添付ファイルの保存先をパスで指定します。
    strPath = "C:\Users\extan\Documents\outlook_temp\"
     
    For Each objItem In objFolder.Items
        For i = 1 To objItem.Attachments.Count
            '添付ファイルに拡張子がある場合のみ処理します。
            If InStr(objItem.Attachments.Item(i), ".") <> 0 Then
                objItem.Attachments.Item(i).SaveAsFile strPath & objItem.Attachments.Item(i)
            End If
        Next i
    Next objItem
 
    Set objItem = Nothing
    Set objInbox = Nothing
    Set objFolder = Nothing
 
End Sub

試しに添付ファイル付きメールをフォルダへ格納して動作してみる

コードの説明はさておき、早速添付ファイルが保存されるか確認をしてみましょう。

添付付きメールを二階層目の「1-1.サブフォルダ」へ移動します。

ソースコードを編集します。
添付ファイルがあるメールのフォルダを指定します。2階層以上ある場合は「.Folders.Item(<フォルダ名>)」を追加してください。
Set objFolder = objInbox.Folders.Item(“1.サブフォルダ”).Folders.Item(“1-1.サブフォルダ”)

添付ファイル保存先となるフォルダのパスを以下ソースコードの””内に指定します。
strPath = “C:\Users\extan\Documents\outlook_temp\”

次にoutlook本体に戻り「開発」タブの「マクロ」>「添付ファイル」を押下します。

はい!添付ファイルが指定フォルダへ保存されましたね。



最後に

いかがでしょうか。添付ファイルを手動で1件づつフォルダへドラッグアンドドロップするよりは手間はぐっと軽減されたかと思います。

このような自動化により普段の作業が楽になるばかりではなくとっさに資料を収集する場合にも有効ですね。

応用編としてはフォルダ指定先をyyymmddの日付フォルダを自動生成してその中に格納したり、添付ファイルリストと格納先へのハイパーリンクをエクセルに出力したりとかいいかもしれません。

次回もいろいろな使い方をとりあげていきたいと思います!



【Outlook VBA】受信したメールの添付ファイルを指定フォルダへ保存&添付ファイルリストをExcel形式で出力

【Outlook VBA】受信したメールの添付ファイルを自動作成した日付フォルダへ保存&添付ファイルリストをExcel形式で出力

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です