ExcelのVBAは、自動化やカスタマイズの強力なツールとして知られています。この記事では、Excel VBAを用いてメールの添付ファイルを受信者別に整理する処理について解説します。具体的なコードとその詳細解説、さらに実用的な応用例を通じて、この処理の利点や魅力を理解しましょう。
Excel VBAの基本
Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。
そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

メール添付ファイルの受信者別整理処理の基本
日常業務で受け取るメールの中には、添付ファイルがあるものも多いでしょう。受信者別にこれらを整理し、効率的にファイル管理を行うことが求められます。VBAを利用すれば、この作業を自動化できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Sub OrganizeAttachmentsByRecipient() Dim OutlookApp As Object Dim OutlookNamespace As Object Dim MailFolder As Object Dim MailItem As Object Dim Attachment As Object Dim SavePath As String Dim Recipient As String ' Outlookオブジェクトの作成 Set OutlookApp = CreateObject("Outlook.Application") Set OutlookNamespace = OutlookApp.GetNamespace("MAPI") ' 受信トレイの設定 Set MailFolder = OutlookNamespace.GetDefaultFolder(6) ' 保存先の設定 SavePath = "C:\MailAttachments\" ' メールを1つずつ処理 For Each MailItem In MailFolder.Items If MailItem.Attachments.Count > 0 Then For Each Attachment In MailItem.Attachments Recipient = MailItem.Recipients(1).Name Attachment.SaveAsFile SavePath & Recipient & "\" & Attachment.FileName Next Attachment End If Next MailItem End Sub |
コードの詳細解説
上記のVBAコードは、Outlookの受信トレイにあるメールの添付ファイルを、受信者の名前のフォルダに整理して保存します。
– 最初にOutlookのアプリケーションオブジェクトと名前空間を作成します。
– GetDefaultFolder(6)
を使用して、受信トレイのフォルダを指定します。
– SavePath
で添付ファイルの保存先フォルダを指定します。
– 受信トレイの各メールを処理するためのFor Each
ループを使用します。メールに添付ファイルがある場合、受信者の名前でフォルダを作成し、その中に添付ファイルを保存します。
応用例
1. 期間指定での添付ファイル整理
受信日を指定して、その期間中に受信したメールの添付ファイルだけを整理する場合、以下のようにコードを修正できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
' ... [前のコードを省略] For Each MailItem In MailFolder.Items If MailItem.ReceivedTime >= Date - 7 And MailItem.ReceivedTime <= Date Then If MailItem.Attachments.Count > 0 Then For Each Attachment In MailItem.Attachments Recipient = MailItem.Recipients(1).Name Attachment.SaveAsFile SavePath & Recipient & "\" & Attachment.FileName Next Attachment End If End If Next MailItem |
このコードは、過去7日間に受信したメールの添付ファイルのみを整理します。
2. 特定の拡張子の添付ファイルのみ整理
特定の拡張子(例:.pdf)の添付ファイルのみを整理する場合のコードは以下の通りです。
1 2 3 4 5 6 7 8 9 10 |
' ... [前のコードを省略] For Each Attachment In MailItem.Attachments If Right(Attachment.FileName, 4) = ".pdf" Then Recipient = MailItem.Recipients(1).Name Attachment.SaveAsFile SavePath & Recipient & "\" & Attachment.FileName End If Next Attachment |
3. 受信者のドメイン別に整理
受信者のメールアドレスのドメイン部分(例:@example.com)で整理する場合のコードは以下となります。
1 2 3 4 5 6 7 |
' ... [前のコードを省略] Dim Domain As String Domain = Split(MailItem.Recipients(1).Address, "@")(1) Attachment.SaveAsFile SavePath & Domain & "\" & Attachment.FileName |
まとめ
ExcelのVBAを使用して、メールの添付ファイルを効率的に受信者別に整理することが可能です。上記の基本的なコードや応用例を参考に、独自のニーズに合わせてカスタマイズしてみてください。
VBAも良いけどパワークエリも良い
VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。
クリックするとパワークエリの全11講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント