Outlookのメールを作成、送信をする。
VBAでOutlookのメールを作成、送信させる処理になります。
メール形式、重要度などのプロパティは下表の設定値を指定することで設定できます。
またSentOnBehalfOfNameプロパティを利用すれば送信者の代理送信の設定が可能です。
| 設定 | プロパティ名 | 設定値 |
| メール形式 | BodyFormat | 1:テキスト型、2:HTML型、3:リッチテキスト型 |
| 重要度 | Importance | 0:低、1:中(規定値)、2:高 |
| 代理送信 | SentOnBehalfOfName | 送信者名の変更(代理送信) |
添付する際は、AttachmentsコレクションのAddメソッドを利用してファイルの添付も可能ですが、
添付ファイルを付けない場合にこのメソッドを実行するとエラーとなります。
また、指定のパスにファイルが存在しない場合もエラーとなります。
サンプルコードでは誤って実行した時に誤送信しないようにSendメソッドをコメントアウトしています。その代わりDispalyメソッドで代用してメールの確認をするようにしています。
動作確認
Windows10/Excel2016:○
Windows11/Excel2024:ー(Outlook未使用のため、未確認)
●メールの作成と送信
'*********************************************************************
' メール作成・送信(Outlook)
'*********************************************************************
Sub sendMail_Outlook()
'アプリケーションオブジェクト
Dim oMailApp As Object
Set oMailApp = CreateObject("Outlook.Application")
'メール作成
Dim oMail As Object
Set oMail = oMailApp.CreateItem(0)
'形式(1:テキスト型、2:HTML型、3:リッチテキスト型)
oMail.BodyFormat = 1
'重要度(0:低、1:中(規定値)、2:高)
oMail.Importance = 2
'宛先
oMail.To = "Send@mail.test.com" 'TO
oMail.cc = "XXXX@mail.test.com" 'CC
oMail.bcc = "XXX@mail.test.com" 'BCC
'件名
oMail.Subject = "xxxxxxのお知らせ"
'本文
oMail.Body = "テスト送信" & vbCrLf & "テスト送信2行目"
'添付ファイル(複数あればそれぞれAddで追加)
oMail.Attachments.Add "C:\VBA\mail\添付ファイル1.txt"
oMail.Attachments.Add "C:\VBA\mail\添付ファイル2.txt"
'送信実行
'※サンプルでは誤送信しないようにSendメソッドをコメントアウトしています。
''oMail.Send
oMail.Display 'メール表示 ※Sendの代わりに使用
Set oMail = Nothing
Set oMailApp = Nothing
End Sub■実行結果

●メールの代理送信
'*********************************************************************
' メール送信(Outlook)
' ※差出人名変更(代理送信)
'*********************************************************************
Sub sendMail_Outlook_Behalf()
'アプリケーションオブジェクト
Dim oMailApp As Object
Set oMailApp = CreateObject("Outlook.Application")
'メール作成
Dim oMail As Object
Set oMail = oMailApp.CreateItem(0)
'差出人設定(代理送信)
oMail.SentOnBehalfOfName = "あいうえお <aaa@aaa.com>"
'形式(1:テキスト型、2:HTML型、3:リッチテキスト型)
oMail.BodyFormat = 2
'宛先(TO)
oMail.To = "Send@mail.test.com"
'件名
oMail.Subject = "xxxxxxのお知らせ"
'本文
oMail.Body = "テスト送信"
'送信実行
'※サンプルでは誤送信しないようにSendメソッドをコメントアウトしています。
''oMail.Send
oMail.Display 'メール表示 ※Sendの代わりに使用
Set oMail = Nothing
Set oMailApp = Nothing
End Sub■実行結果

なお代理送信で送信したメールをOutlookで受信した場合は下記のように表示されます。



