目次
使用環境
- 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
メソッドを利用することで、送信前に内容を確認することができます。
自動送信に不安がある場合や、宛先が変動する場合に非常に有効な方法です。
安心してメールを管理したい方には、ぜひ取り入れていただきたいテクニックです。
ここまでお読みいただき、誠にありがとうございました。