【エクセルVBA】Outlookでメールを作成・送信する方法


vba,メール送信,send,eyecatch

皆様こんにちは、ノグチです。

前回記事では、エクセルVBAでOutlookを操作するための準備として、Microsoft Outlook XX.X Object Libraryの参照設定の方法と、Outlookアプリケーションオブジェクトの取得方法をご紹介しました。

【エクセルVBA】エクセルVBAでOutlookを操作しよう!参照設定とOutlookアプリケーションオブジェクトの取得
エクセルVBAでOutlookのメール送信やタスク作成操作をする前準備として、VBEの参照設定や、Outlookアプリケーションオブジェクトの取得方法をご紹介しています。 VBAとOutlookを組み合わせて使うことで、既に便利に使えているメーラーを更に便利にできるかもしれませんよ。

今回は、前回取得したOUtlookアプリケーションオブジェクトで、エクセルVBAからOutlookにメールを送信させる方法をご紹介します!

MailItemオブジェクトで新しいメールを操作する

さて、前回記事でOutlookアプリケーションオブジェクトは取得できているので、お次はMailItemオブジェクトを作成しましょう。

MailItemオブジェクトとは?

MailItemオブジェクトは、Outlookのメールを操作するためのオブジェクトです。

Outlookは、メールのほかに予定やタスク、連絡先といったアイテムを登録することができますよね。

VBAでは、そういったアイテムを、下記のオブジェクトによって作成・操作することができます。

Outlookのアイテム オブジェクト名
メール MailItem
予定 AppointmentItem
タスク TaskItem
連絡先 ContactItem

CreateItemメソッドでMailItemオブジェクトを作成する

では、MailItemオブジェクトを作成しましょう。

まずは、MailItemオブジェクト型変数の宣言をします。

Dim オブジェクト名 As Outlook.MailItem

そして、CreateItemメソッドで、MailItemオブジェクトを作成します。

CreateItemメソッドは、先に上げたようなOutlookアイテムのオブジェクトを作成するメソッドで、下記のように記述します。

Outlookアプリケーションオブジェクト.CreateItem(作成するオブジェクトの種類)

CreateItemメソッドのパラメータ

CreateItemメソッドのパラメータには、Outlookで作成する各アイテムタイプの種類名か、値を指定します。

作成するオブジェクト 指定するアイテムの種類名 オブジェクトの役割
MailItem olMailItem 0 メールを操作するオブジェクト
AppointmentItem olAppointmentItem 1 予定を操作するオブジェクト
ContactItem olContactItem 2 連絡先を操作するオブジェクト
TaskItem olTaskItem 3 タスクを操作するオブジェクト

MailItemオブジェクトを作成する

今回はメールを操作するMailItemオブジェクトを作成したいので、CreateItemメソッドのパラメータにはこのようにolMailItemか、を指定すればOKです。

Outlookアプリケーションオブジェクト.CreateItem(olMailItem)
コードにしてみると、こんな感じになります。
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メソッドを使います。

記述方法はコチラ。

MailItemオブジェクト.Send

エクセルVBAでOutlookにメールを送信させるコード

では、MailItemオブジェクトとプロパティ、Sendメソッドを使ってメールを送信してみましょう。

こちらのエクセルシートに記入された文章を、メールのタイトルと本文にセットして送信してみます。

vba,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,send,メール,送信結果

当たり前ですが、手動で送ったメールと変わりありませんね。

ちゃんとメールの送信ができています!

最後に

今回は、エクセルVBAからOutlookにメールを送信させる方法をご紹介しました。

メール1件2件程度なら手でのメール送信で良いかもしれませんが、10件20件を手動で送信となると辛いものがありますよね。

エクセルVBAからOutlookにメールを送信させられれば、これまで手間だったメール送信作業を、一気に簡略化できるかもしれませんよ。

次回は、エクセルシートにリストアップされた複数のメールアドレスに、メール本文の内容を変えつつ送信する方法をご紹介します。

【エクセルVBA】エクセルシートに一覧化された複数の連絡先に本文を変えつつOutlookでメールを一括送信する方法
エクセルVBAでOutlookを操作して、複数の送信先に、各メールの本文を変えつつ、メール送信する方法をご紹介しています。メールの冒頭部の宛名をコピペで作成していた方、もしかしたらこの方法でメール送信の手間が軽減できるかもしれません。

それでは、最後までお読みいただきありがとうございました!

連載目次:エクセルVBAでOutlookを操作してみよう!

エクセルVBAでOutlookのメール作成、送信などの操作をする方法をご紹介しています。メーラーとして便利なOutlookですが、VBAと組み合わせて更に便利に使ってしまいましょう。

  1. 【エクセルVBA】エクセルVBAでOutlookを操作しよう!参照設定とOutlookアプリケーションオブジェクトの取得
  2. 【エクセルVBA】Outlookでメールを作成・送信する方法
  3. 【エクセルVBA】エクセルシートに一覧化された複数の連絡先に本文を変えつつOutlookでメールを一括送信する方法
  4. エクセルVBAでOutlookメールの下書きを作成・表示して送信前に内容チェックする
  5. エクセルVBAでOutlookの連絡先を登録する方法
  6. 【エクセルVBA】GetNamespaceメソッドでOutlookのデータフォルダにアクセスする方法
  7. エクセルVBAでOutlookの受信メールフォルダとサブフォルダ名を書き出す方法
  8. エクセルVBAでOutlookの受信メールをワークシートに書き出す方法

  投稿者プロフィール

ノグチフリーランスPG・SE
元製造子会社SE。
業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁと日々夢見ております。

タイトルとURLをコピーしました