こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、ExcelVBAからOutlookを操作してメール送信する方法を知っていますか?
ExcelVBAからメール送信ができれば、メール送信処理が自動化できるのでとても便利です。
そこで今回は、
・ExcelVBAからメール送信する方法
といった基礎的なことから、
・ExcelVBAからOutlookを操作する方法
・Excelのデータを使ってメール送信するサンプルコード
といった応用的な方法まで、徹底的に解説します!
ExcelVBAからメールを送信する方法
まず、ExcelVBAからメールを送信する方法について解説します。
ExcelVBAからメールを送信する場合は、Outlookの機能を使ってメールを送信します。
Excelが入っているパソコンであればほとんどOutlookも入っているので、連携もしやすいですね。
「gmailを使っている場合はどうすればいいんだろう・・・」と悩む方もいるかもしれませんが、OutlookからGmailのアカウントを追加することもできるので、以下を参考にしつつ追加すればOKです。
参考:http://itdiary.info/microsoft-office/post-1046/
また、個人で利用する場合も「Office365 Solo」でリーズナブルな金額で月額利用することができるので、Outlookが入っていない方は「Office365 Solo」の月額契約がおすすめです!

引用:Microsoft® Office | Office 365® – プランの比較
ExcelもOutlookも同じMicrosoft製なので、連携がしやすくおすすめです!
VBAからOutlookを操作する方法
次に、VBAからOutlookを操作する方法について解説します。
事前準備:参照設定の追加
まず、Outlookを操作するための参照設定追加方法について解説します。
参照設定追加手順は次のとおりです。
1. ツール→参照設定を選択

2. 「Microsoft Outlook XX.X Object Library」にチェックを入れてOKボタンをクリック

これで、Outlookを操作するための準備が完了です。
メールの送信方法
次に、メールを作成する方法について解説します。
Outlookでメールを送信する場合は、次のような手順でメールを作成します。
1. Outlookを操作するためのオブジェクトを作成
2. メール操作用のオブジェクトを作成
3. メール操作用のオブジェクトに送信内容を追加
4. メール送信処理を実行
それぞれ詳しく解説しますね。
Outlook操作用のオブジェクト作成
まずは、Outlook操作用のオブジェクト作成方法について解説します。
Outlook操作用のオブジェクトは、次のように書くことで作れます。
Outlook操作用のオブジェクト作成方法:
Dim 変数名 As Outlook.Application Set 変数名 = New Outlook.Application
「Outlook.Application」でを指定して変数を作ることで、Outlookのオブジェクトを作ることができます。
このOutlookオブジェクトに対して、メール送信の設定をしていく流れになります。
メール送信用のオブジェクトを設定
次に、メール送信用のオブジェクト作成方法について解説します。
Outlookはメール以外にも、予定表・連絡先・タスクなどがあるため、メールを指定したオブジェクトを作る必要があります。
メール送信用のオブジェクトの作り方は、以下のとおりです。
メール送信用のオブジェクト作成方法:
Dim メール送信用の変数名 As Outlook.MailItem Set メール送信用の変数名 = Outlook操作用のオブジェクト変数.CreateItem(olMailItem)
「Outlook.MailItem」でメールを指定して、「CreateItem(olMailItem)」で作成したメールを、メール送信用の変数に入れています。
さきほどのOutlook操作用のオブジェクトを作ったあと、メール送信用のオブジェクトを作る場合は以下のようになります。
サンプルコード:
Sub Test() 'Outlookオブジェクトの変数宣言 Dim outlookObj As Outlook.Application Set outlookObj = New Outlook.Application 'メール送信用のオブジェクト作成 Dim mailObj As Outlook.MailItem Set mailObj = outlookObj.CreateItem(olMailItem) End Sub
メール操作用のオブジェクトに送信内容を追加
次に、メールの送信内容を追加する方法について解説します。
送信内容を追加する場合は、以下のようなプロパティでそれぞれ設定していきます。
| No | プロパティ | 内容 |
|---|---|---|
| 1 | To | メールの宛先 |
| 2 | CC | メールのCC |
| 3 | BCC | メールのBCC |
| 4 | Subject | メールの件名 |
| 5 | SentOn | メールの送信日 |
| 6 | Body | メール本文 |
| 7 | BodyFormat | メールのテキスト形式 ・プレーンテキスト:olFormatPlain ・HTML :olFormatHTML ・リッチテキスト :olFormatRichText |
宛先TO、メール件名、メール本文を設定する場合は、次のようになります。
サンプルコード:
Sub Test()
'Outlookオブジェクトの変数宣言
Dim outlookObj As Outlook.Application
Set outlookObj = New Outlook.Application
'メール送信用のオブジェクト作成
Dim mailObj As Outlook.MailItem
Set mailObj = outlookObj.CreateItem(olMailItem)
'メール送信内容の作成
With mailObj
.To = "xxxxxxxxxxxxx@xxxxx.xxx" 'メール宛先
.Subject = "新しいメールの件名" 'メール件名
.Body ="メール本文をここに書くよ。" 'メール本文
.BodyFormat = olFormatPlain 'メール形式に設定
End With
End Sub
メールを送信する方法
最後に、メールを送信する方法について解説します。
メール送信する方法は次のとおりです。
メール送信用オブジェクト.Send
Sendメソッドを使えば、簡単にメールを送信することができます。
先ほど作ったサンプルを送信する場合は、次のようになります。
サンプルコード:
Sub Test()
'Outlookオブジェクトの変数宣言
Dim outlookObj As Outlook.Application
Set outlookObj = New Outlook.Application
'メール送信用のオブジェクト作成
Dim mailObj As Outlook.MailItem
Set mailObj = outlookObj.CreateItem(olMailItem)
'メール送信内容の作成
With mailObj
.To = "xxxxxxxxxxxxx@xxxxx.xxx" 'メール宛先
.Subject = "新しいメールの件名" 'メール件名
.Body ="メール本文をここに書くよ。" 'メール本文
.BodyFormat = olFormatPlain 'メール形式に設定
End With
'メール送信
mailObj.Send
End Sub
メール送信後の受信実行結果:

このように、簡単にメールを送信することができます。
Excelに登録されているデータからメール送信するサンプル
最後に、Excelで作成したデータ一覧の数分メールを送信するサンプルコードを用意しました。
Excelデータ:

サンプルコード:
Sub Test3()
'データ一覧の最終行取得
Dim maxRow As Long
maxRow = Cells(Rows.Count, 1).End(xlUp).Row
'データ行数文メール送信処理を実施
Dim i As Long
For i = 2 To maxRow
'Outlookオブジェクトの変数宣言
Dim outlookObj As Outlook.Application
Set outlookObj = New Outlook.Application
'メール送信用のオブジェクト作成
Dim mailObj As Outlook.MailItem
Set mailObj = outlookObj.CreateItem(olMailItem)
'メール送信内容の作成
With mailObj
.To = Cells(i, 2).Value 'メール宛先 TO
.Subject = Cells(i, 3).Value 'メール件名
.Body = Cells(i, 4).Value 'メール本文
.BodyFormat = olFormatPlain 'メール形式に設定
End With
'メール送信
mailObj.Send
Next i
End Sub
実行結果:


「Cells(Rows.Count, 1).End(xlUp).Row」でデータの最終行を取得し、2行名から最終行(maxRow)までFor文で繰り返し処理を行い、繰り返し処理の中でメール送信する処理を書いています。
「Cells(行番号, 列番号).Value」でセルの値を取得し、To・Subject・Bodyにそれぞれ値を入れています。
このように、簡単にメール送信処理を作ることができます。
まとめ
今回は、Outlookと連携したメール送信方法について解説しました。
メール連携ができれば、業務効率化ツールが簡単に作れます。
使い方も簡単なので、ぜひ使ってみてくださいね!






