VBA

【VBAでOutlook操作】複数ファイルを添付できる!下書きメールを一括作成するマクロ

こんにちは、もりです!

前回の記事では、Excelのデータを元に下書きメールを一括作成するマクロを紹介しました。

【VBAでOutlook操作】Excelシートのデータから下書きメールを一括作成するExcelシートに用意したデータを元に、Outlookの下書きメールを一括で作成する方法を紹介しています。 宛先ごとにメール文面を変えることもできますよ!...

 

今回の記事では、下書きメールに「ファイルを添付する方法」を紹介します。

「複数ファイルを添付した下書きメールアイテム」を作成します。

作成した下書きは、下記のいずれかの処理ができます。

  • 画面に表示させる
  • 画面に表示はさせず、直接「下書き」フォルダに保存する
  • 画面に表示はさせず、直接「送信」する
outlook-attach2

下書きメールを一括作成してファイル添付する

下書きアイテムの作成方法は、前回記事(【VBAでOutlook操作】Excelシートのデータから下書きメールを一括作成する)で紹介したとおりです。

【事前準備】Excelシートに「添付ファイルのキーワード」の列を追加する

前回記事のフォーマットに「添付ファイルキーワード」の列を追加します。※ご自身の業務要件に応じてフォーマットは調整してください。

outlook-attach1
  • F列:添付ファイルのキーワードを追加

佐藤さん宛てのメールには、ファイル名に”佐藤”が含まれるファイルを添付する

鈴木さん宛てのメールには、ファイル名に”鈴木”が含まれるファイルを添付する


という仕組みです。

【事前準備】任意のフォルダにファイルを用意する

下書きメールに添付するファイルを、任意のフォルダに格納しておきます。

ここでは、C:\Outlookテスト\fileというパスの配下にファイルを格納しています。このパスをマクロのコード内に記述します。

outlook-attach4

ソースコード

下記を標準モジュールに貼り付けます。

  • 参照設定で「Microsoft Outlook XX.0 Object Library」を使用
  • 92行目の変数fileStorePathに、添付ファイルを格納しているパスを記述
  • 事前にOutlookを起動しておき、mainプロシージャを実行

指定のパス配下のファイルを1つずつ検索し、指定のキーワード(”佐藤”や”鈴木”など)を含むファイルが見つかった場合、そのファイルを下書きメールに添付します。

キーワードを含むすべてのファイルを添付するため、指定フォルダ内のファイルを全件検索します。

キーワードを含むファイルが見つからない場合は、何も添付せず、メール本文のみを作成します。

outlook-attach3

【参考1】送信処理まで自動で行う

上記で紹介したコードは「下書きアイテムの作成」ですが、「送信処理」もマクロで実行することができます。

※事前に必ずテストして、誤送信のないよう、自己責任で慎重にお使いください!

54行目のメソッドを書き換えます。

mailItemObj.Display → mailItemObj.Send

 

送信したメールは、Outlookの「送信済みアイテム」に入ります。

【参考2】「下書き」フォルダに直接保存する

下書きメールアイテムを表示させず、直接「下書き」フォルダに保存することもできます。

54行目のメソッドを書き換えます。

mailItemObj.Display → mailItemObj.Save

 

メールの下書き作成からファイルの添付まで、めんどうくさいことは全部自動化しちゃいましょう!

添付ファイルが存在しない場合の処理

ねぇもりさん、添付ファイルがなかったら、下書きメール作らなくていいんだけどな。
どうすればいーい?
もり
もり
なるほどね~ちょっと工夫すればできるよ!次の記事で紹介するね!
【VBAでOutlook操作】添付ファイルの有無を判定して下書きメールを作成するVBAでOutlook操作をしよう!下書きメールの作成・ファイルの添付方法を紹介しています。「キーワードに一致したファイルが存在しない場合はメールを作成しない」という処理を加えています。...

連載目次:VBAでOutlook操作

Excelシートのデータから下書きメールを一括作成する方法、指定のキーワードに合致するファイルを添付する方法などを紹介しています。