皆様こんにちは、ノグチです。
前回記事では、エクセルVBAでOutlookを操作するための準備として、Microsoft Outlook XX.X Object Libraryの参照設定の方法と、Outlookアプリケーションオブジェクトの取得方法をご紹介しました。
今回は、前回取得したOUtlookアプリケーションオブジェクトで、エクセルVBAからOutlookにメールを送信させる方法をご紹介します!
MailItemオブジェクトで新しいメールを操作する
さて、前回記事でOutlookアプリケーションオブジェクトは取得できているので、お次はMailItemオブジェクトを作成しましょう。
MailItemオブジェクトとは?
MailItemオブジェクトは、Outlookのメールを操作するためのオブジェクトです。
Outlookは、メールのほかに予定やタスク、連絡先といったアイテムを登録することができますよね。
VBAでは、そういったアイテムを、下記のオブジェクトによって作成・操作することができます。
Outlookのアイテム | オブジェクト名 |
---|---|
メール | MailItem |
予定 | AppointmentItem |
タスク | TaskItem |
連絡先 | ContactItem |
CreateItemメソッドでMailItemオブジェクトを作成する
では、MailItemオブジェクトを作成しましょう。
まずは、MailItemオブジェクト型変数の宣言をします。
そして、CreateItemメソッドで、MailItemオブジェクトを作成します。
CreateItemメソッドは、先に上げたようなOutlookアイテムのオブジェクトを作成するメソッドで、下記のように記述します。
CreateItemメソッドのパラメータ
CreateItemメソッドのパラメータには、Outlookで作成する各アイテムタイプの種類名か、値を指定します。
作成するオブジェクト | 指定するアイテムの種類名 | 値 | オブジェクトの役割 |
---|---|---|---|
MailItem | olMailItem | 0 | メールを操作するオブジェクト |
AppointmentItem | olAppointmentItem | 1 | 予定を操作するオブジェクト |
ContactItem | olContactItem | 2 | 連絡先を操作するオブジェクト |
TaskItem | olTaskItem | 3 | タスクを操作するオブジェクト |
MailItemオブジェクトを作成する
今回はメールを操作するMailItemオブジェクトを作成したいので、CreateItemメソッドのパラメータにはこのようにolMailItemか、0を指定すればOKです。
Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Set objOutlook = New Outlook.Application Set objMail = objOutlook.CreateItem(olMailItem)
これで、MailItemオブジェクトが作成できました!
お次はMailItemオブジェクトのプロパティで、メールの中身をセットしていきましょう。
MailItemオブジェクトのプロパティ
MailItemオブジェクトには、例えばこちらのようなプロパティがあります。
プロパティ | 内容 |
---|---|
To | メールの宛先 |
CC | メールのCC |
BCC | メールのBCC |
Subject | メールの件名 |
SentOn | メールの送信日 |
Body | メール本文 |
BodyFormat | メールのテキスト形式(プレーンテキスト(olFormatPlain)・HTML(olFormatHTML)・リッチテキスト(olFormatRichText)のいずれかを指定) |
これらのプロパティに、こんな感じで値をセットしていきます。
With objMail .To = "MailAddress@xx.xx" 'メール宛先 .Subject = "メールの件名" 'メール件名 .Body = "メール本文" 'メール本文 .BodyFormat = olFormatPlain 'メールの形式 End With
MailItem.Sendメソッドでメールを送信する
さて、MailItemオブジェクトのプロパティに値を指定すれば、メールの作成は完了です。
後はこのメールを送信すればOK。
Outlookのメールを送信するには、MailItemオブジェクトのSendメソッドを使います。
記述方法はコチラ。
エクセルVBAでOutlookにメールを送信させるコード
では、MailItemオブジェクトとプロパティ、Sendメソッドを使ってメールを送信してみましょう。
こちらのエクセルシートに記入された文章を、メールのタイトルと本文にセットして送信してみます。
Sub SendEmail() Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Dim wsMail As Worksheet Set objOutlook = New Outlook.Application Set wsMail = ThisWorkbook.Sheets("メール内容") Set objMail = objOutlook.CreateItem(olMailItem) With wsMail objMail.To = "MailAddress@xx.xx" 'メール宛先 objMail.Subject = .Range("B1").Value 'メール件名 objMail.BodyFormat = olFormatPlain 'メールの形式 objMail.Body = .Range("B2").Value 'メール本文 objMail.Send End With Set objOutlook = Nothing MsgBox "送信完了" End Sub
エクセルシートのB1セルに記入された内容を、Subjectプロパティに、B2セルに入力された内容をそれぞれセットしてメールを送信するコードです。
そしてこちらのコードを実行して送信されたメールを受信したものがこちらです。
当たり前ですが、手動で送ったメールと変わりありませんね。
ちゃんとメールの送信ができています!
最後に
今回は、エクセルVBAからOutlookにメールを送信させる方法をご紹介しました。
メール1件2件程度なら手でのメール送信で良いかもしれませんが、10件20件を手動で送信となると辛いものがありますよね。
エクセルVBAからOutlookにメールを送信させられれば、これまで手間だったメール送信作業を、一気に簡略化できるかもしれませんよ。
次回は、エクセルシートにリストアップされた複数のメールアドレスに、メール本文の内容を変えつつ送信する方法をご紹介します。
それでは、最後までお読みいただきありがとうございました!
連載目次:エクセルVBAでOutlookを操作してみよう!
エクセルVBAでOutlookのメール作成、送信などの操作をする方法をご紹介しています。メーラーとして便利なOutlookですが、VBAと組み合わせて更に便利に使ってしまいましょう。
- 【エクセルVBA】エクセルVBAでOutlookを操作しよう!参照設定とOutlookアプリケーションオブジェクトの取得
- 【エクセルVBA】Outlookでメールを作成・送信する方法
- 【エクセルVBA】エクセルシートに一覧化された複数の連絡先に本文を変えつつOutlookでメールを一括送信する方法
- エクセルVBAでOutlookメールの下書きを作成・表示して送信前に内容チェックする
- エクセルVBAでOutlookの連絡先を登録する方法
- 【エクセルVBA】GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法
- エクセルVBAでOutlookの受信メールフォルダとサブフォルダ名を書き出す方法
- エクセルVBAでOutlookの受信メールをワークシートに書き出す方法