業務で複数の方にメール通知をする機会がある方もいると思う。
数件なら良いが、数十件、数百件ともなると一件ずつコピー&ペーストで作成していては大変だ。
そこで、ExcelからOutlookオブジェクトを利用して一気に作成する方法を紹介する。
まず送付先のアドレスや宛名などの可変項目をリストで用意する。
それから、送付するメールの本文を用意し、テンプレート(拡張子:oft)として保存する。
以下、c:\work\test.oftとして保存したものとする。
添付ファイルのtest1~test3.txtもc:\workに入れておく。
そして、ExcelのVBエディタで「Microsoft Outlook XX.X Object Library」にチェックを入れておく。
ここからいよいよコード作成。
ひとまず、メールを1通だけ作成するマクロを書いてみる。
※Outlookではなく、Excelマクロとして送付リストのシートモジュールに書く。
Sub メール作成() Dim ol As New Outlook.Application Dim m As MailItem Set m = ol.CreateItemFromTemplate("c:\work\test.oft") m.To = "test@thom.jp" m.Subject = "TESTさん用テスト" m.Attachments.Add "c:\work\test1.txt" m.HTMLBody = Replace(m.HTMLBody, "●●", "TEST") m.SaveAs "c:\work\sample.msg" End Sub
これを実行すると、c:\workにsample.msgというファイルができる。
開いてみると、宛先・件名・宛名・添付ファイルがコードのとおりに正しく設定されていることが分かる。
セキュリティ設定によって、Outlook側で警告ダイアログが出る場合がある。
これは、外部プログラム(Excel)がOutlookにアクセスしようとしているが許可するかどうかの確認である。
何分間のアクセスを許可するといった選択肢があるはずなので、適宜許可することでマクロは実行できる。
さて、次に実際にエクセルの表に従ってメールを大量作成していくマクロであるが、1通作成できればあとは繰り返すだけなのでさほど難しくはない。
完成したのは以下のコード。
Enum 列 宛先 = 1 宛名 件名 添付ファイル End Enum Sub メール作成() Dim ol As New Outlook.Application Dim m As MailItem Dim MaxRow: MaxRow = Range("A1").End(xlDown).Row For i = 2 To MaxRow Set m = ol.CreateItemFromTemplate("c:\work\test.oft") m.To = Cells(i, 列.宛先).Value m.Subject = Cells(i, 列.件名).Value m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル).Value m.HTMLBody = Replace(m.HTMLBody, "●●", Cells(i, 列.宛名).Value) m.SaveAs "c:\work\" & Cells(i, 列.宛名).Value & ".msg" Next i End Sub
セル指定には過去記事でとりあげた列挙型(Enum)を使用しているので、分からなければそちらも併せて確認してほしい。
thom.hateblo.jp
とりあえずこれで3通のメールが仕上がった。
あとは開いて問題ないことを確認しながら、送付ボタンを押していくだけである。
今回取り上げた方法以外にOutlook側にマクロを書いてExcelシートを読み込ませる方法もあるが、Outlookマクロは配布に難があるのでExcelからのOutlook操作をオススメする。
OutlookVBAに関する書籍
今回の記事のようにOutlook連携をしようと思うと、どちらかというとOutlookVBAの知識が必要になる。
残念ながら、日本語書籍でOutlookVBAを扱っているものは皆無だ。発売中の書籍はおろか、絶版書にすら存在しない。一度も発売されたことが無いようだ。
悔しいことに、英語の書籍は充実している。以下はそのうちの一つで、Kindle版も購入できる。

Microsoft Outlook 2007 Programming: Jumpstart for Power Users and Administrators
- 作者: Sue Mosher
- 出版社/メーカー: Digital Press
- 発売日: 2007/07/19
- メディア: Kindle版
- この商品を含むブログを見る
Outlook2002対応の書籍でよければ、以下のペーパーバックで中古が安い。

Microsoft Outlook Programming: Jumpstart for Administrators, Developers, and Power Users
- 作者: Sue Mosher
- 出版社/メーカー: Digital Press
- 発売日: 2002/09/26
- メディア: ペーパーバック
- この商品を含むブログを見る