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
VBEのコードエリアへ、コードを貼り付けて保存します。
マクロを実行する
早速添付ファイルが保存されるか確認をしてみましょう。
添付付きメールを二階層目の「1-1.サブフォルダ」へ移動します。
ソースコードを編集します。
添付ファイルがあるメールのフォルダを指定します。2階層以上ある場合は「.Folders.Item(<フォルダ名>)」を追加してください。
Set objFolder = objInbox.Folders.Item("1.サブフォルダ").Folders.Item("1-1.サブフォルダ")
添付ファイル保存先となるフォルダのパスを以下ソースコードの””内に指定します。
strPath = "C:\Users\extan\Documents\outlook_temp\"
次にoutlook本体に戻り「開発」タブの「マクロ」>「添付ファイル」を押下します。
はい!添付ファイルが指定フォルダへ保存されましたね。
受信トレイ直下を指定し添付ファイルを保存する
これまでサブフォルダを指定してきましたが、次は受信トレイ直下を指定し添付ファイルを保存する方法についても説明をします。
変更箇所は以下の通りです。
■変更前
Set objFolder = objInbox.Folders.Item("1.サブフォルダ").Folders.Item("1-1.サブフォルダ")
■変更後
Set objFolder = objInbox
<追加>添付ファイルの上書き保存の回避、期間指定をする方法
添付ファイルの上書き保存の回避、期間指定をする方法について別記事にまとめました。
上書き保存をさせたくない場合は、ご参考頂きたくお願いいたします。
さいごに
いかがでしょうか。
今回は、
についてまとめました。
添付ファイルを手動で1件づつフォルダへドラッグアンドドロップするよりは手間はぐっと軽減されたかと思います。
このような自動化により普段の作業が楽になるばかりではなく資料を収集する場合にも有効ですね。
応用編としてはフォルダ指定先をyyymmddの日付フォルダを自動生成してその中に格納したり、添付ファイルリストと格納先へのハイパーリンクをExcelに出力したりとかいいかもしれません。
ありがとうございました。
古いので、出来なかったみたいです。
原因が分かりスッキリ致しました。
コピーさせて頂き、保存場所や添付メール場所も入力しましたが、保存が出来ませんでした。
エラーも出ないで、動きがありません。
何が間違えなのか分かりません。
お教え頂きたくお願い申し上げます。
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 (“hc”).Folders. Item (“202210”)
strPath = “C:\Users\tojon\Desktop\PDF\”
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
いつもご利用ありがとうございます。
保存場所や添付メール場所を入力しても添付が保存できない件ですが、
コードは問題なさそうです。
ほかには、
フォルダ指定がOutlookの実際の構成とあっていないことが考えられますので、
ご確認いただきたくお願いいたします。
また、古いメールは、Exchengeサーバ側に保管される場合があり、この場合、PCのOutlookには存在しないため取得はできません。
“202210”と指定されているので、これに該当する可能性があり、お手数ですが、新規添付ファイル付きメールを該当フォルダに移動し、
取得できるかご確認いただきたくお願いいたします。