![見出し画像](https://assets.st-note.com/production/uploads/images/35665458/rectangle_large_type_2_bfcf7ffd6d940dc1f582f7af0df44ac9.png?width=1200)
【エクセルVBA】マクロでメール自動送信する方法を解説(業務効率化)
なめこ太郎です。
今回は、エクセルVBAで自動メール送信する方法をご紹介します。
それでは、本題に入ります。
自動メール送信マクロを実行する条件
![画像1](https://assets.st-note.com/production/uploads/images/35732921/picture_pc_d456de65c3a2d8e9cdc4f3f84bf5c339.png?width=1200)
まず最初に注意点。
メールは『Outlook』で送信します。
つまり、メール送信マクロを使用する端末は、
『Outlookの設定ができている』ことが前提条件です。
Outlookの設定をしていない場合は、メール送信マクロを実行してもエラーとなります。
自動メール送信マクロコード
以下、マクロ本文です。
vb
'---メール送信マクロ---(今回は例として『3つの別々の送信宛がある』場合とします)
rc = MsgBox("Out lookを起動し、メール送信します。" & Chr(13) & _
"送信後、Out lookは自動で閉じます。", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
'Out look 起動
Dim oApp
Dim myNameSpace
Dim myFolder
Set oApp = CreateObject("Outlook.Application")
Set myNameSpace = oApp.GetNameSpace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(6)
myFolder.Display
oApp.ActiveWindow.WindowState = 2
'メール本文(例として4行分です)
mess = "<div style=""font-family:Meiryo UI;font-size:10pt;"">" & _
"ここに本文を入力<br />" & _
"ここに本文を入力<br />" & _
"ここに本文を入力<br />" & _
"ここに本文を入力</div>"
'1つ目の送信宛て
Set mail1 = oApp.CreateItem(0)
mail1.BodyFormat = 2 'HTML形式
mail1.To = "メールアドレス入力;2つ目のメールアドレス入力" 'メールアドレス(アドレスが複数ある場合は『;』で区切ってください)
mail1.Subject = "ここに件名を入力" '件名
mail1.Attachments.Add "添付ファイルがある場合は、ここにファイルパスを入力" '添付ファイル
'2つ目の送信宛て
Set mail2 = oApp.CreateItem(0)
mail2.BodyFormat = 2 'HTML形式
mail2.To = "メールアドレス入力" 'メールアドレス
mail2.Subject = "ここに件名を入力" '件名
mail2.Attachments.Add "添付ファイルがある場合は、ここにファイルパスを入力" '添付ファイル
'3つ目の送信宛て
Set mail3 = oApp.CreateItem(0)
mail3.BodyFormat = 2 'HTML形式
mail3.To = "メールアドレス入力" 'メールアドレス
mail3.Subject = "ここに件名を入力" '件名
mail3.Attachments.Add "添付ファイルがある場合は、ここにファイルパスを入力" '添付ファイル
'本文の代入
mail1.HTMLBody = mess
mail2.HTMLBody = mess
mail3.HTMLBody = mess
'メール送信
mail1.Send
mail2.Send
mail3.Send
'メール送信待機
Dim waitTime As Variant
waitTime = Now + TimeValue("0:00:10") 'Outlook送信待ち(送信完了前にOutlookを閉じてしまうと、未送信になります)
Application.Wait waitTime
'out look 終了
oApp.explorers.Item(oApp.explorers.Count).Close
'いいえ 選択時
Else
End If
以上がマクロ本文になります。
このVBAのポイントは、『送信完了前にOutlookを終了させないこと』です。
送信完了前にOutlookが閉じてしまうと未送信になります。
マクロ本文では、10秒間の待ち時間を設けていますが、パソコンの処理速度によって時間は調整してみてください。
まとめ
「一連のマクロ処理中に自動メール送信機能を追加したい」
というユーザーの要望は多いです。
【一連のマクロ処理の例】
.xlsファイル
↓
.pdf化
↓
帳票印刷
↓
メール送信
↓
完了
あなたの日常の定型業務で、「この部分が自動でメール送れたら楽なのになぁ」という部分はありませんか?
メール送信自動化は、業務効率化に直結します。
メール送信マクロが使えるところって、ひとつやふたつあると感じています。
そして、メール送信マクロが使えそうなところがありましたら、あなたの勤務先にいらっしゃる情報システム部へ頼み込んでください(笑)
きっと喜んで作業をしてくれるはずです。以上です。
※本記事の内容で実行された結果について、筆者は一切の責任を負いませんので、ご了承ください。必ず自己責任で実行してください。
本業情シスが解説します。
会社パソコンでサボったことがある方は、読む価値あるかも?