【VBA】Outlookでメールを送信する前に内容を確認する方法

目次

使用環境

  • OS:Windows 10 Pro(バージョン:20H2)
  • 使用ソフト:Microsoft Outlook、Excel VBA

経緯

VBAを使ってOutlookでメールを送信する仕組みは作成できたのですが、
「宛先」や「CC」に固定メンバー以外の相手を追加する場合、送信前に内容を確認したいと考えました。

そのため、メールを送信する手前で画面に内容を表示する方法を勉強し、まとめました。
同じ悩みを持つ方の参考になれば幸いです。

方法:「.Display」を使う

OutlookのVBAには、.Displayメソッドを使用して、作成したメールを送信前に表示する方法があります。
以下に実際のコードを示します。

コード例

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(1)
    Set objMail = objOutlook.CreateItem(olMailItem)

    ActiveWorkbook.Save

    With wsMail
        objMail.To = .Range("A6") ' メール宛先
        objMail.CC = .Range("B6") ' CC
        objMail.Subject = .Range("C6").Value ' メール件名
        objMail.BodyFormat = olFormatPlain ' メール形式(プレーンテキスト)
        objMail.Body = .Range("D6").Value ' メール本文
        objMail.Display ' メールを画面に表示(ここがポイント)
    End With

End Sub

※ご注意:投稿いただいた元コードには一箇所誤字がありました(obiMail.Display → 正しくは objMail.Display です)。上記は修正済みです。

コードのポイント解説

  • 1行目:マクロ名を設定しています。
  • 2~4行目:使用するオブジェクト(Outlook、メールアイテム、シート)の変数を宣言しています。
  • 5~7行目:各オブジェクトの初期化を行っています。
  • 8行目:マクロ実行時にファイルを上書き保存しています。
  • 9~16行目:Withブロック内でメールの各項目を設定しています。
    • 10行目:宛先(To)を設定します。複数名に送信する場合は「&」でつなげます。
    • 11行目:CCを設定します。
    • 12行目:件名を設定します。
    • 13行目:本文の形式(プレーンテキスト)を設定します。
    • 14行目:本文内容を設定します。
    • 15行目:ここでメールを送信せず、画面に表示するようにしています。
  • 17行目:Withブロックを終了します。
  • 18行目:マクロを終了します。

この後の工夫ポイント

さらにわかりやすくするために、例えばメール表示後に**メッセージボックス(MsgBox)**で
「内容を確認し、問題なければ手動で送信してください」
と案内を表示することも可能です。

これにより、より安全に確認しながらメール送信を進めることができるでしょう。

まとめ

OutlookでVBAを使った自動メール送信時に、.Displayメソッドを利用することで、送信前に内容を確認することができます。
自動送信に不安がある場合や、宛先が変動する場合に非常に有効な方法です。

安心してメールを管理したい方には、ぜひ取り入れていただきたいテクニックです。

ここまでお読みいただき、誠にありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次