こんな人にオススメの記事です
- 受信したメールの添付ファイルを自動ですべて保存したい人
- OutlookでVBAを使ってみたい人
- Outlookを使った業務の効率化を検討している人
この記事では、マクロを使ってOutlookで受信したメールの添付ファイルを自動的に所定のフォルダー内に保存する方法を初心者にもわかりやすく、丁寧に解説していきます。
Outlookのマクロを使う事前準備その1 すべてのマクロを有効にする
まずはOutlookで自作したマクロの実行を許可するように設定していきます。
Outlookを起動し、左上にある[ファイル]をクリックしてください。
![すべてのマクロを有効にする step1 [ファイル]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その1 すべてのマクロを有効にする-1024x576.png)
[ファイル]をクリックすると「アカウント情報」と大きく書かれた画面に移動します。
その中の[オプション]をクリックしてください。
![すべてのマクロを有効にする step2 [オプション]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その1 すべてのマクロを有効にする2-1024x576.png)
[オプション]をクリックすると「Outlookのオプション」と書かれたウィンドウが立ち上がります。
そのウィンドウの左側にある[トラストセンター]をクリックしてください。
![すべてのマクロを有効にする step3 [トラストセンター]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その1 すべてのマクロを有効にする3-1024x576.png)
[トラストセンター]をクリックすると「セキュリティと詳細情報」を書かれた画面に移動します。
その中にある[トラストセンターの設定]と書かれたボタンをクリックしてください。
![すべてのマクロを有効にする step4 [トラストセンターの設定]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その1 すべてのマクロを有効にする4-1024x576.png)
[トラストセンターの設定]と書かれたボタンをクリックすると「トラストセンター」が立ち上がります。
その画面の左側メニューにある[マクロの設定]をクリックしてください。
![すべてのマクロを有効にする step5 [マクロの設定]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その1 すべてのマクロを有効にする5-1024x576.png)
[マクロの設定]をクリックすると「マクロの設定」と書かれた画面に移動します。
その中にある[すべてのマクロを有効にする]にチェックを入れてください。
次に右下にある[OK]をクリックしてください。
![すべてのマクロを有効にする step6 [すべてのマクロを有効にする]にチェックを入れて[OK]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その1 すべてのマクロを有効にする6-1024x576.png)
「マクロの設定」と書かれた画面で[OK]をクリックすると、「Outlookのオプション」ウィンドウに戻ります。
再度右下にある[OK]をクリックして、「Outlookのオプション」ウィンドウを閉じてください。
これでOutlookで自作のマクロを実行することができるようになります。
![すべてのマクロを有効にする step7 1つ前の画面に戻るので再度[OK]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その1 すべてのマクロを有効にする7-1024x576.png)
Outlookのマクロを使う事前準備その2 リボンに開発タブを表示する
Outlookで自作のマクロの実行を許可した後は、Outlookのリボンに開発タブを表示させます。
Outlookの「リボン」とは以下の赤枠で囲った箇所を指します。

リボン(英: ribbon)とは、マイクロソフトが提唱した、アプリケーションソフトウェアの操作コマンドメニューの表示領域におけるグラフィカルユーザーインターフェイス (GUI) 方式の一種である。Microsoft Office 2007で初めて搭載された。
Wikipedia https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%9C%E3%83%B3_(GUI)
Outlookのリボンに開発タブを表示させることで、マクロの管理が簡単になります。
Outlookを起動し、左上にある[ファイル]をクリックしてください。

[ファイル]をクリックすると「アカウント情報」と大きく書かれた画面に移動します。
その中の[オプション]をクリックしてください。
![リボンに開発タブを表示する step2 [オプション]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その2 リボンに開発タブを表示する2-1024x576.png)
[オプション]をクリックすると「Outlookのオプション」と書かれたウィンドウが立ち上がります。
そのウィンドウの左側にある[リボンのユーザー設定]をクリックしてください。
![リボンに開発タブを表示する step3 [リボンのユーザー設定]をクリックする](https://jo-sys.net/wp-content/uploads/2022/11/Outlookのマクロを使う事前準備その2 リボンに開発タブを表示する3-1024x576.png)

[リボンのユーザー設定]をクリックすると「リボンをカスタマイズします。」と書かれた画面に移動します。
右側の枠の中にある[開発]にチェックを入れて、右下の[OK]をクリックしてください。
受信したメールの添付ファイルを自動保存するためのマクロ
すべてのマクロを有効にし、Outlookのリボンに[開発]タブが表示されたら次は実際にマクロを作成していきましょう。
Option Explicit
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim folderPath As String
Dim entryIDs As Variant
Dim recTime As String
Dim attachFileName As String
Dim i As Long
Dim objMsg As Object
Dim objAttach As Attachment
folderPath = "C:\Users\Downloads\" '添付ファイルを保存するフォルダパスを指定、最後に\を付けること
entryIDs = Split(EntryIDCollection, ",") '複数のメールを同時受信した際は、複数のIDがカンマ区切りで渡されるため、カンマ区切りでIDを配列に格納
For i = 0 To UBound(entryIDs)
Set objMsg = Application.Session.GetItemFromID(entryIDs(i)) '受信したメールを取得
recTime = Format(objMsg.ReceivedTime, "yyyymmdd-hhmm_") '受信日時を取得してタイトル用に文字列に変換
For Each objAttach In objMsg.Attachments '受信メールに添付されたファイル毎に処理
attachFileName = folderPath & recTime & objAttach.FileName 'フォルダパスを付けて添付ファイル名を用意
objAttach.SaveAsFile attachFileName '添付ファイルを保存
Next
Next i
Set objMsg = Nothing
End Sub
上記がVBAのコードです。
14行目のfolderPath = "C:\Users\Downloads\"で保存先を指定しているので、そこを指定のフォルダーに書き換えてください。(必須)
フォルダーのフルパスを確認するには以下の手順で行います。
- 指定したいフォルダーを右クリック
- [プロパティ]をクリック
- [セキュリティ]タブをクリック
[セキュリティ]タブのオブジェクト名に書かれているのがフルパスです。

受信した日付毎にフォルダーを作成し、その中に受信したメールの添付ファイルを自動保存するためのマクロ
受信したメールの添付ファイルを自動保存するためのマクロの応用編で、指定したフォルダーの中に日付毎のサブフォルダーを自動で作成し、その中に添付ファイルを保存していくものです。
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim folderPath As String
Dim entryIDs As Variant
Dim recTime As String
Dim attachFileName As String
Dim i As Long
Dim objMsg As Object
Dim objAttach As Attachment
folderPath = "C:\Users\Downloads\" '添付ファイルを保存する親フォルダパスを指定、最後に\を付けること
entryIDs = Split(EntryIDCollection, ",") '複数のメールを同時受信した際は、複数のIDがカンマ区切りで渡されるため、カンマ区切りでIDを配列に格納
For i = 0 To UBound(entryIDs)
Set objMsg = Application.Session.GetItemFromID(entryIDs(i)) '受信したメールを取得
recTime = Format(objMsg.ReceivedTime, "yyyymmdd-hhmm_") '受信日時を取得してタイトル用に文字列に変換
subfolder = Format(objMsg.ReceivedTime, "yyyymmdd") '受信日時yyyymmddでサブフォルダ名を用意
frag = Dir(folderPath & subfolder, vbDirectory) 'Dir関数で親フォルダの中にサブフォルダの有無を確認
If frag = "" Then '親フォルダの中にサブフォルダがない場合(すでにサブフォルダがある場合は何もしない)
MkDir folderPath & subfolder 'サブフォルダを作成
End If
For Each objAttach In objMsg.Attachments '受信メールに添付されたファイル毎に処理
attachFileName = folderPath & subfolder & "\" & recTime & objAttach.Filename 'フォルダパスを付けて添付ファイル名を用意
'attachFileName = folderPath & subfolder & "\" & objMsg.SenderName & "_" & objMsg.Subject & "_" & recTime & objAttach.Filename '「メールのタイトル+送信者名+受信日時+添付ファイル名」の場合
objAttach.SaveAsFile attachFileName '添付ファイルを保存
Next
Next i
Set objMsg = Nothing
End Sub
上記がVBAのコードです。
12行目のfolderPath = "C:\Users\Downloads\"で保存先を指定しているので、そこを指定のフォルダーに書き換えてください。(必須)
受信したメールの添付ファイルを自動保存するためのマクロをOutlookに保存
マクロを作成できたら、以下の手順でマクロをOutlookに保存します。
Outlookのマクロを使う事前準備その2 リボンに開発タブを表示するで表示させた[開発]タブをクリックしてください。

[開発]タブを開いたら一番左にある[Visual Basic]をクリックしてください。

[Visual Basic]をクリックすると、上記のような画面が表示されます。
左上の枠の中にある[ThisOutlookSession]をクリックしてください。

[ThisOutlookSession]の中に受信したメールの添付ファイルを自動保存するためのマクロを貼り付けてください。
貼り付け終えたら左上にある[上書き保存]をクリックしてください。
上書き保存ができたら右上の✕をクリックしてマクロの画面を閉じてください。

受信したメールの添付ファイルを自動保存するためのマクロを動かしてみる
このマクロを動かすのは非常に簡単です。
Outlookで送受信し、添付ファイルがあるメールを受信したら自動で添付ファイルを指定したフォルダーに保存してくれます。
例えば、20221124-情シスの自由帳.pdf
という添付ファイルがあるメールをOutlookで受信した場合、指定したフォルダー内に20221125-1113_20221124-情シスの自由帳.pdf
というファイルが保存されます。
その他Outlookに関する記事
その他Outlookに関する記事はこちらです。ぜひご覧ください。
-
添付されているwinmail.datの開き方6選
こんな方にオススメ winmail.datが添付されたメールが来て困っている方 winmail.datが何なのかわからない方 winmail.datの開き方を知りたい方 winmail.datを変換したい... -
Outlookで受信したメールの画像が表示されない場合の対処法
こんな人にオススメの記事です 受信したメールの本文にある画像が赤い✕印で表示されてしまう人 受信したメールの本文にある画像を自動的に表示させたい人 Outlookでメー... -
OutlookからWinmail.datを送らないための設定方法 Outlook2019
こんな人にオススメの記事です 取引先などから添付ファイルが無いと苦情を受けることが多い方 OutlookからWinmail.datを送りたくない方 メール送信先がOutlook以外のソ... -
Outlook2019で自動送受信する時間の間隔を指定する方法
こんな方にオススメ Outlook2019を使っている方 メールの受信頻度をあげたい方 メールをできるだけ早く受信したい方 Outlook2019には一定の間隔でメールを自動的に送受... -
Outlookでフォルダー内のメール件数を表示する方法
こんな人にオススメの記事です フォルダー内に何件のメールが保存されているか見たい人 Outlookをもっと便利に使いたい人 通常、フォルダー名の右側には新着(未開封)... -
エクセルやワードの保護ビューを解除する方法
こんな人にオススメの記事です ダウンロードしたエクセルやワードを保護ビューで開きたくない人 OUTLOOKで受信したエクセルやワードを保護ビューで開きたくない人 エク... -
Outlookにパスワードを設定する方法
こんな方にオススメ Outlookのメールを他人に見られたくない Outlookにパスワードを設定したい Outlookに設定されているパスワードを解除したい この記事では、Outlook... -
Outlookでメールの署名を設定する方法 Outlook2019
こんな人にオススメの記事です Outlook2019を使っている方 Outlookでメールの署名を設定したい方 どんなメールの署名が良いか迷っている方 Outlook2019でメールに署名を... -
Outlook Web版でメールの署名を設定する方法
こんな人にオススメの記事です 初めてOutlook Web版を使う方 Outlook Webを使っていて、メールの末尾に署名を登録したい方 Outlookにはパソコンにアプリケーション(ソ...
最後までご覧いただきありがとうございました。
このサイトは情シスマンが半径3m以内のITに関する情報を掲載してるサイトです。
Windows系を主として、ソフトや周辺機器について思い立った物を色々解説しています。
解説している内容に誤りがあった場合や、補足が必要な場合、もっと知りたい場合はこちらのお問い合わせフォームからご連絡ください。
個人の方を限定にサポートさせていただきます。
実行環境
Windows11 Home 22H2
64 ビット オペレーティング システム
Microsoft 365