概要
PCにOutlookがインストールされている場合、VBAでメール送信を自動化することが出来る。
それによって、例えばExcelで送信先やメール内容を管理して、Excelでマクロを実行してすぐさまメール送信、ということが可能。
条件が整っているのであれば、下手にRPAを作るより効率が良い…。
必要条件
Outlookがインストールされていて、アカウントの設定が1つ以上あること。
準備
Excel VBA(またはWordやAccess)で実装する場合、参照設定を行うとコーディングが楽になる。
VBAのメニュー → ツール → 参照設定を選択。
「Microsoft Outlook xxx Object Library」にチェックを入れて、OKを押す。
※ 「xxx」はインストールされているOfficeのバージョンによって異なる。
メール送信サンプル
MailItem オブジェクト (Outlook) | Microsoft Docs
Public Sub メール送信()
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Set objOutlook = New Outlook.Application
Set objMail = objOutlook.CreateItem(olMailItem)
With objMail
.To = "test1@example.com; test2@example.com"
.Subject = "テスト件名"
.Body = "テスト本文"
.Display ' メール作成画面で表示するのみ
'.Save ' 下書き保存
'.Send ' メール送信
End With
End Sub
上記サンプルを実行すると、メール作成画面が表示されるので、送信前に内容を確認することができる。送信するには自分で送信ボタンを押す必要がある。
また、差出人はOutlookに設定されているアカウントが使用される。
名前から宛先を指定する
Outlookのアカウントから利用できるアドレス帳を使い、名前から宛先などを指定することができる。
アドレス帳に、以下のような宛先があるとする。
この「山田 太郎」という名前から宛先を取得するのが以下のサンプル。
Public Sub メール送信2()
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim objRecipient As Outlook.Recipient
Set objOutlook = New Outlook.Application
Set objMail = objOutlook.CreateItem(olMailItem)
With objMail
Set objRecipient = .Recipients.Add("山田 太郎")
objRecipient.Resolve
objRecipient.Type = olCC
.To = "test1@example.com; test2@example.com"
.Subject = "テスト件名"
.Body = "テスト本文"
.Display ' メール作成画面で表示するのみ
End With
End Sub
タスクを他人に依頼する
Outlookの機能の1つ、タスクの作成や、そのタスクを人に依頼することもできる。
TaskItem オブジェクト (Outlook) | Microsoft Docs
Public Sub タスク作成()
Dim objOutlook As Outlook.Application
Dim objTask As Outlook.TaskItem
Dim objRecipient As Outlook.Recipient
Set objOutlook = New Outlook.Application
Set objTask = objOutlook.CreateItem(olTaskItem)
With objTask
.Assign ' タスクを人に依頼する状態にする
Set objRecipient = .Recipients.Add("山田 太郎")
objRecipient.Resolve
.Subject = "テスト件名"
.Body = "テスト本文"
.DueDate = Now + 30
.Display
End With
End Sub
サンプルを実行した結果は以下の通り。