VBAでメールを送信できるようにしたいと思い色々調べたのですが、なかなかたらい廻しだったので、実装できたソースを公開します。
環境は、windows10 、office365(excel2019、outlook2019)
条件として、送信元を設定する場合はoutlookに登録をしましょう。
(設定しない場合はmlObj.SendUsingAccount を消す。outlookのデフォルトアカウントが使用されます。)
Sub Ht_mail_send() '変数セット■■■■■■■■■■■■■■■■■■■■■■■■■ Dim fromAddress As String 'from送信元 Dim toAddress As String 'To宛先 Dim ccAddress As String 'cc宛先 Dim bccAddress As String 'bcc宛先 Dim mailSubject As String '件名 Dim mailBody As String '本文 Dim mailFooter As String 'フッター Dim mailAttached As String '添付ファイルのパス Dim mailMyattachments As Outlook.Attachments '添付で使用するオブジェクト生成 Dim olObj As Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mlObj As Outlook.MailItem 'Outlookで使用するオブジェクト生成 'メール設定■■■■■■■■■■■■■■■■■■■■■■■■■ '1.差出人、本文、署名を取得する fromAddress = "zzzz@zzz.zzz" 'from送信元 toAddress = "zzzz@zzz.zzz" 'To宛先 ccAddress = "" 'cc宛先 bccAddress = "" 'bcc宛先 mailSubject = "テストータイトル" '件名 mailBody = "文章1" & vbCrLf & "文章2" '本文 mailFooter = Now() & "送信" 'フッター mailAttached = "C:Userstest.txt" '添付ファイルパス '2.メールを作成して、差出人、本文、署名(フッター)を買う脳 Set olObj = CreateObject("Outlook.Application") 'outlookオブジェクト作成 Set mlObj = olObj.CreateItem(olMailItem) 'メールデータオブジェクト作成 mlObj.SendUsingAccount = olObj.Session.Accounts.Item(fromAddress) '送信元設定 mlObj.BodyFormat = 1 'メール形式をテキストに変更。テキスト=1、HTML=2、リッチテキスト=3 mlObj.To = toAddress 'to宛先をセット mlObj.CC = ccAddress 'cc宛先をセット mlObj.BCC = bccAddress 'bcc宛先をセット mlObj.subject = mailSubject '件名をセット '3.メール本文とフッターを設定 mlObj.body = mailBody & vbCrLf & vbCrLf & mailFooter 'メール本文 改行 改行 クレジット '4.添付ファイルを設定(ここではなしのためコメントアウト) Set mailMyattachments = mlObj.Attachments '添付のオブジェクト作成 mailMyattachments.Add mailAttached '添付する '5.メール送信する 'mlObj.Save '下書き保存の場合 'テストモードの分岐を作っておく。sheet1のA1セルにテストモードと入っていれば表示のみ If ThisWorkbook.Worksheets("sheet1").Range("B1").Value = "テストモード" Then mlObj.display 'テストモードは表示をする MsgBox "メールが作成されました" & vbCrLf & "内容を確認して下さい" mlObj.Close olDiscard '保存せずに終了 Else mlObj.Send 'メール送信 olObj.Quit 'outlook切断 End If '6.オブジェクトの解放 Set olObj = Nothing Set mlObj = Nothing End Sub
細かく設定していますがメールを送るだけですと、オブジェクトと宛先と内容をセットするだけでもいいと思います。
バージョンが2007以前などでは動かない場合もあるかもしれませんのであしからず。
コメント