今回はマクロを使ってメールを自動作成・送信する方法を紹介したいと思います。
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 | 宛先(複数指定する場合は「;(セミコロン)」で区切る) |
strCc | CC(複数指定したい場合は「;(セミコロン)」で区切る) |
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 | 宛先(複数指定する場合は「;(セミコロン)」で区切る) |
strCc | CC(複数指定したい場合は「;(セミコロン)」で区切る) |
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
注意点
注意点としてはCCは指定しなくても動きますが、宛先は一つ以上指定しないと実行時にエラーになってしまいますのでご注意ください!
まとめ
今回はExcelのマクロを使ってメールを作成・送信する方法を紹介しました。
動作について再度まとめるとこんな感じです。
- MakeMailの各変数(strTo,strCc,strSubject,strBody)にそれぞれ値を設定
- SendMailを呼び出す。この時、呼び出し元の変数(strTo,strCc,strSubject,strBody)が引数になる
- OutlookApplicationオブジェクトとメールオブジェクトを作成
- メールオブジェクトに宛先,Cc,件名,内容をセットし、送信
情報を各項目にセットしてメールを作成・送信するマクロはそのままコピペして、メールの情報(宛先,Cc,件名,本文)を設定するマクロさえいじればいつでも使えるので便利です!
色々応用が利くと思いますので、是非参考にしていただければと思います!
コメント