【Excel VBA】マクロを使ってメールを自動作成・送信する方法を紹介【Outlook】

Excel
スポンサーリンク

今回はマクロを使ってメールを自動作成・送信する方法を紹介したいと思います。

VBAを使えるようにする方法については以前紹介していますので、是非参考にしていただければと思います!

スポンサーリンク

ソースコードの紹介

今回はマクロを2つ用意します。それぞれ下記のように機能を分けています。

  • メールの情報(宛先,Cc,件名,本文)を設定するマクロ
  • 情報を各項目にセットしてメールを作成・送信するマクロ

分けてある理由は、単純に使いまわしが利くようにする為です。

また、今回はマクロから別のマクロを呼び出す方法を使用しています。以下の記事で紹介・解説していますのでこちらも併せてご覧ください!

メールの情報(宛先,Cc,件名,本文)を設定するマクロ

それではソースコードを紹介します。はじめにメールの情報を設定するマクロから紹介します。

下記ソースコードをそのままコピペしてもらって大丈夫です。

Sub MakeMail()
    
    Dim strTo                   As String
    Dim strCc                   As String
    Dim strSubject              As String
    Dim strBody                 As String
    
    strTo = "【ここに宛先に追加するメールアドレスを指定】"
    strCc = "【ここにCCに追加するメールアドレスを指定】"
    strSubject = "【ここに件名を指定】"
    strBody = "【ここに本文を指定】"
    
    Call SendMail(strTo, strCc, strSubject, strBody)
    
End Sub

ここでは変数を4つ用意します。各変数の役割は以下の通りです。

変数中身
strTo宛先(複数指定する場合は「;(セミコロン)」で区切る)
strCcCC(複数指定したい場合は「;(セミコロン)」で区切る)
strSubject件名
strBody本文

情報を各項目にセットしてメールを作成・送信するマクロ

次に情報を各項目にセットしてメールを作成・送信するマクロを紹介します。

こちらもコピペでOKです。

Sub SendMail(strTo As String, _
            strCc As String, _
            strSubject As String, _
            strBody As String)

    Dim oApp                    As Object
    Dim oItem                   As Object
    
    Set oApp = CreateObject("Outlook.Application")      'OutlookApplicationオブジェクトをセット
    Set oItem = oApp.CreateItem(0)                      'メールオブジェクトを生成
    
    oItem.To = strTo                                    '宛先をセット
    oItem.CC = strCc                                    'CCをセット
    oItem.Subject = strSubject                          '件名をセット
    oItem.Body = strBody                                '内容をセット
    
    oItem.Send                                          'メール送信
        
    Set oApp = Nothing                                  'OutlookApplicationオブジェクトを解放
    Set oItem = Nothing                                 'メールオブジェクトを解放

End Sub
スポンサーリンク

動作説明

それでは動作説明です。それぞれざっくり説明します。

1.MakeMailの各変数に値を設定

まず初めにメール作成に必要な各情報を設定します。それぞれ以下のように設定します。

変数中身
strTo宛先(複数指定する場合は「;(セミコロン)」で区切る)
strCcCC(複数指定したい場合は「;(セミコロン)」で区切る)
strSubject件名
strBody本文

一応入力例としてはこんな感じです(メールアドレスは仮)。

strTo = "to_haribona@example.com"
strCc = "cc_haribona@example.com"
strSubject = "【はりぼな】テストメール【ブログ】"
strBody = "こんにちは!これはテストメールです。"

2.SendMailを呼び出す

Callステートメントを使用して、SendMailを呼び出します。この時、先程設定した変数を引数にしてSendMail側に受け渡します

Call SendMail(strTo, strCc, strSubject, strBody)

3.OutlookApplicationオブジェクトとメールオブジェクトを作成

SendMailを呼び出したら、OutlookApplicationオブジェクトメールオブジェクトを作成します。

OutlookApplicationオブジェクトって何?

ってなる方もいると思います。

詳しい説明は省きますが、ざっくり「Excel側でOutlookを操作できるようにする為の儀式」みたいなものだと思っておいてください。

メールオブジェクトはそのままで、送信するメールのひな型を作成します。

Set oApp = CreateObject("Outlook.Application")
Set oItem = oApp.CreateItem(0)

4.メールオブジェクトに宛先,Cc,件名,内容をセットし、送信

メールオブジェクトまで作成し終わったら、メールオブジェクトにMakeMailから受け取った引数を各項目にセットします。

oItem.To = strTo
oItem.CC = strCc
oItem.Subject = strSubject
oItem.Body = strBody

セットし終わったら、oItem.Sendでメールを送信します。

oItem.Send
4.メールオブジェクトに宛先,Cc,件名,内容をセットし、送信
スポンサーリンク

注意点

注意点としてはCCは指定しなくても動きますが宛先は一つ以上指定しないと実行時にエラーになってしまいますのでご注意ください!

まとめ

今回はExcelのマクロを使ってメールを作成・送信する方法を紹介しました。

動作について再度まとめるとこんな感じです。

  1. MakeMail各変数(strTo,strCc,strSubject,strBody)にそれぞれ値を設定
  2. SendMailを呼び出す。この時、呼び出し元の変数(strTo,strCc,strSubject,strBody)が引数になる
  3. OutlookApplicationオブジェクトメールオブジェクトを作成
  4. メールオブジェクトに宛先,Cc,件名,内容をセットし、送信

情報を各項目にセットしてメールを作成・送信するマクロはそのままコピペして、メールの情報(宛先,Cc,件名,本文)を設定するマクロさえいじればいつでも使えるので便利です!

色々応用が利くと思いますので、是非参考にしていただければと思います!

コメント

タイトルとURLをコピーしました