エクセルVBAでOutlookメールの下書きを作成・表示して送信前に内容チェックする


vba,outlook,display

みなさまこんにちは、ノグチです。

前回は、エクセルシートに一覧化された複数のメールアドレスに、本文を変えつつ、メールを一括送信する方法をご紹介しました。

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

でも、一括送信できるとはいえ、送信前に内容チェックしたいな、ということもありますよね。

そんな時に使えるのが、MailItemオブジェクトのDisplayメソッドです。

今回は、このDisplayメソッドで、VBAで作成したOutlookのメールを、メール送信前に内容をチェックする方法をご紹介します!

MailItemオブジェクトとは何ぞや?については、こちらの記事でご紹介していますので、併せてご覧ください。

【エクセルVBA】Outlookでメールを作成・送信する方法
エクセルシートに記入された件名や本文を、エクセルVBAによってOutlookのメールの件名と本文にセットしてメール送信する方法をご紹介しています。VBAでメールの送信ができれば、宛先に応じてメールの本文を変えつつ一斉に送信することもできますよ。
スポンサーリンク

Displayメソッドとは

Displayメソッドは、Outlookのメール作成画面を開くメソッドです。

MailItemオブジェクトのプロパティに値をセットした後にこのメソッドでメール作成画面を開くと、宛先やメール本文が意図した通りにセットされているか?文章がおかしくないか?をチェックすることができるのです。

記述方法はコチラ。

MailItemオブジェクト.Display

メール送信前にメールの内容をチェックするコード

Displayメソッドでメール内容をチェックするコードは、例えばこんな感じになります。
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem

Set objOutlook = New Outlook.Application
Set objMail = objOutlook.CreateItem(olMailItem)

With objMail
    .To = "xxxxxxx@xxxx.co.jp"       'メール宛先
    .Subject ="〇〇〇の件"               'メール件名
    .BodyFormat = olFormatPlain     'メールの形式
    .Body = "メール本文"                  'メール本文

    .Display
End With

CreateObjectメソッドでMailItemオブジェクトを作成して、MailItemオブジェクトのプロパティで値をセットした後、Displayメソッドでメール内容をチェックするというコードです。

当たり前ですが、Displayメソッドは、MailItemオブジェクトの各プロパティに値をセットした後に記述しましょう。

でないと、まっさらなメール作成画面が開いてしまうことになります。

VBAで作成したメールの内容をチェックする

実際に上のコードを実行して開いたメール画面がこちら。

vba,outlok,display,メール画面

この通り、Outlookのメール作成画面が開いて、VBAのコードでセットした内容をチェックできます。

Displayメソッドで開いたメール作成画面は、手動で「新しいメール」をクリックして開く画面と同じものなので、「送信」ボタンを押せばそのままメールが送信できますよ。

複数のメールをDisplayメソッドでチェックしたい場合

前回の記事でご紹介したような、複数の送信先にメールを送信したい場合にも、このDisplayメソッドでのメール内容チェックは使えます。

例えば、このワークシートにあるような複数送信先に対して、メールを送信したいとします。

vba,エクセルシート,送信先

上のコードの、MailItemオブジェクトをCreateItemメソッドで作成する部分から、MailItemオブジェクトのプロパティにメール内容をセットする部分、そしてDisplayメソッドでメール画面を表示する部分をループで挟んで、こんなコードにします。

Dim objOutlook As Outlook.Application
Dim i      As Long
Dim rowMax As Long
Dim wsList As Worksheet
Dim objMail As Outlook.MailItem

Set objOutlook = New Outlook.Application
Set wsList = ThisWorkbook.Sheets("送信先")

With wsList

    '送信先の件数
    rowMax = .Cells(Rows.Count, 1).End(xlUp).Row

    '送信先の件数分繰り返す
    For i = 2 To rowMax
        Set objMail = objOutlook.CreateItem(olMailItem)
        With objMail
            .To = wsList.Cells(i, 4).Value       'メール宛先
            .Subject = "〇〇〇の件"            'メール件名
            .BodyFormat = olFormatPlain          'メールの形式
            .Body = "メール本文"                 'メール本文
            .Display
        End With
    Next i

End With

そしてこのコードを実行すると…

vba,outlook,メール画面,複数

このように送信したいメール件数分、メール作成画面が表示されますので、メールの内容をチェックして「送信」をクリックしていけばOKです。

最後に

今回は、Displayメソッドで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の受信メールをワークシートに書き出す方法

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