こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、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と連携したメール送信方法について解説しました。
メール連携ができれば、業務効率化ツールが簡単に作れます。
使い方も簡単なので、ぜひ使ってみてくださいね!