環境
Windowsの仕様
エディション:Windows 10 Pro
バージョン:20H2
経緯
VBAを使って、メールを送信することはできたのですが、「宛先」や「CC」など固定メンバー以外の人にも送るときどうするか悩んで、”メールを送信する前”を画面にメール内容を出せないか考えました。
なので、今回はメール内容を送信する手前まで行く方法を勉強しました。参考になったら幸いです。
「.Display」を使う
「.Display」を使うとうまくいきました。コードを載せます。*.Displayのコードは15行目です。
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 'メール本文 obiMail.Display End With End Sub
コードの説明をします。空白の行はカウントしてません。
1行目、マクロの名前を決めてます。
2~4行目、変数の宣言しています。
5~7行目、変数をセットしています。5行目、私はsheet1に”メール宛先”とか”メール件名”とかの情報を書いているので、それを呼ぶための文です。
8行目、ファイルを上書き保存します。
9行目、With文開始です。*私はセルに各情報を載せているので、こんな書き方ですが、直接、アドレスやメール文を”=”の後に入力しても大丈夫です。
10行目、「メールの宛先」です。複数人ある場合「&」でつなげると、複数の人に送れますよ。
11行目、「CC」です。
12行目、「メール件名」です。
13行目、「メール形式」です。
14行目、「メール本文」です。
15行目、ここが送信する前にOUTLOOKメールの本文を表示する命令です。
16行目、With文終わりです。
17行目、マクロ終わりです。
この後の展開
MsgBoxでメッセージを追加するとより分かりやすいと思います。
ここまで読んでいただきありがとうございました。