【エクセルVBA】メール送信マクロ

スポンサーリンク
excelvba エクセル
スポンサーリンク

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以前などでは動かない場合もあるかもしれませんのであしからず。

 

 

エクセル
スポンサーリンク
3rdcomをフォローする
ITスキルを伸ばすサイト/WEBサイトやプログラムのあれこれ【HTML、CSS、Javascript、PHP、VBA、python】

コメント

タイトルとURLをコピーしました