VBA

【VBAでOutlook操作】Excelシートのデータから下書きメールを一括作成する

ねぇもりさん、会社で毎日たくさんメールを出す作業があるんだ。ラクにできる方法ないかなぁ
もり
もり
一斉送信はできないの??
宛先ごとにメールの文面を変えるから、一件ずつ個別に送信しなきゃいけないんだ
もり
もり
なるほどね~それならVBAでツールを作っちゃおう

 

メール本文がまったく同じ内容であればToやBccなどで一斉送信できますが、相手によってメールの文面を変えたい場合は、一通ずつメールを作成して個人宛に送信する必要がありますよね。

 

Excelシートに用意したデータを元に、Outlookの下書きメールを一括作成するマクロを紹介します。

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

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

VBAでOutlookの下書きメールを一括作成する

※この記事はVBAの基本操作を習得している方向けに書いているので、全般的な解説は省略しています。

【事前準備】Excelシートにデータを用意する

下記のようなフォーマットを用意します(※ご自身の業務要件に応じてフォーマットは調整してください)

シート名は「mail」としておきます。

outlook1-2
  • A~E列:宛先と宛先ごとの情報
  • J列:固定情報

J列の「本文」は「ひな形」です。宛先毎に変更したい箇所を()全角かっこでくくっています。

outlook1-3

ひな形のこの部分をマクロで置き換えます。

  • (氏名):C列の値に置換
  • (使用日):D列の値に置換
  • (金額):E列の値に置換

ソースコード

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

  • 「ツール」→「参照設定」で「Microsoft Outlook XX.0 Object Library」を使用
  • 事前にOutlookを起動しておき、mainプロシージャを実行

【実行結果】下書きメールが作成される

Excelシートの行数分、下書きメールが作成されます。

outlook1-6

【参考】下書きフォルダに保存する・直接送信する

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

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

 

・下書きフォルダに保存する場合

mailItemObj.Display → mailItemObj.Save

 

・直接送信する場合(※必ず事前にテストして、誤送信のないようお気をつけください)

mailItemObj.Display → mailItemObj.Send

 

以上です!

 

ねぇもりさん、添付ファイルも付けられないかなぁ?
もり
もり
できるよ~!次の記事で紹介するね!
【VBAでOutlook操作】複数ファイルを添付できる!下書きメールを一括作成するマクロExcelシートのデータを元に、Outlookの下書きメールを一括作成するマクロです。キーワードに一致する複数ファイルをまとめて添付できるのがポイントです ...