このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】Excelからメールを自動作成する方法

2022年12月13日

VBAを使ってExcelからメールの作成をしたことがありますか?
Outlookのオブジェクトを使用すると結構簡単にメール作成ができます。

今回はメール作成のやり方と便利な使い道を紹介します。

使い道は意外と思いつかないと思うのですが、そのヒントとなる考え方を紹介します。
私は1つだけ相性の良い業務があったので、そのマクロを重宝しています。
この記事を参考に、自動化できる業務を探してみてはどうでしょう。

こんな人に向けた記事です。

  • メールの自動送信をしたい 
  • 同じメールを繰り返し送信している
  • Excelのデータを引用してメールを作りたい

やり方を知っている方は便利な使い方から読んでください。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBAでメールを自動作成する方法

まずはライブラリにチェックを

プログラムの作成の前に、Outlookオブジェクトのライブラリにチェックを入れましょう。

f:id:hamahiro881477:20201121015259p:plain

上の図のようにツール⇒参照設定を押します。

f:id:hamahiro881477:20201118150845p:plain

ライブラリ一覧が表示されるので、その中から「Microsoft Outlook xx.x Object Library」にチェックを入れてOKを押します。(xx.xにはバージョンの値が入る)

これでライブラリの設定は完了です。

VBAプログラムの書き方

先にメールを自動作成するサンプルプログラムを紹介します。

Sub MakeEmail()
  Dim objOutlook As Outlook.Application
  Dim objMail As Outlook.MailItem
  Dim shtMail As Worksheet: Set shtMail = ThisWorkbook.Sheets("メール内容")
  'Outlookオブジェクト/MailItemオブジェクトの作成
  Set objOutlook = New Outlook.Application
  Set objMail = objOutlook.CreateItem(olMailItem)
  With objMail
    .To = shtMail.Cells(1, 1).Value 'メール宛先
    .Subject = shtMail.Cells(2, 1).Value 'メール件名
    .BodyFormat = olFormatPlain 'メールの形式
    .Body = shtMail.Cells(3, 1).Value 'メール本文
    .Display ' メール作成画面の表示
    '.Send 'メール送信
  End With
  Set objOutlook = Nothing
End Sub

Outlookオブジェクト(objOutlook)とMailItem オブジェクト(objMail)という2つのオブジェクトを作成しています。

  • Outlookオブジェクトは文字通りOutlookを操るために必要なオブジェクトです。
  • MailItemオブジェクトはOutlookの中のメールを操作するのに必要なオブジェクトです。

今回はメールですが、操作したい内容に応じてCreateItemメソッドの引数を変更します。

作成するオブジェクト引数操作したい内容
MailItemolMailItemメール
AppointmentItemolAppointmentItem予定
ContactItemolContactItem連絡先
TaskItemolTaskItemタスク

また、With文の中でメールの内容を指示しています。

With objMail
    .To = shtMail.Cells(1, 1).Value 'メール宛先
    .Subject = shtMail.Cells(2, 1).Value 'メール件名
    .BodyFormat = olFormatPlain 'メールの形式
    .Body = shtMail.Cells(3, 1).Value 'メール本文
    .Display ' メール作成画面の表示
    '.Send 'メール送信
  End With

各プロパティに値を設定することで宛先、件名、本文を自動入力することができます。

今回は「メール内容」シートの各セルの値を入力しました。

f:id:hamahiro881477:20201118151449p:plain

Sendメソッドはコメントアウトしていますが、このコメントを外せばそのまま送信することができます。

f:id:hamahiro881477:20201118150858p:plain

このマクロを実行すると画像のようにOutlookのメール送信画面が立ち上がります。

宛先、件名、メール本文にはそれぞれ「メール内容」シートの値が入ります。

このようにシート上の情報から自動的にメール文を作成することができます。

便利な使い方

メールの自動作成を活用するには、大きく次の4つがポイントになります。

  1. 文字列をつなげる
  2. 納期の自動計算
  3. 宛先が多数の場合
  4. 署名の使い分け

具体的には、次のようなニーズと相性が良いです。

  1. Excelシート上の文字列をつなぎ合わせて本文を作成したり、
  2. Date型を使って納期を自動計算したり、
  3. 毎回同じ人にメールを送信していたり、
  4. 社内、社外向けで署名を使い分けたりしたい。

私も利用例は少ないのですが、1件大きな効果を挙げたケースがありみあす。

シートの上の商品名などを使って依頼メールを作成するもので、年間120時間の業務削減に成功しました。

回答納期などもVBA内で自動計算できるため、手入力でミスすることもなくなりました。

Excel情報を転記してメール作成する業務があれば自動化できる可能性が高いため、いろいろと活用してみてください。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから