【マクロ・VBA】Outlookでメールを送る方法 ~ファイルを添付しよう!編~

マクロ・VBA

Excelで作成した連絡帳を使ってメールを送信したいと思うことありませんか?
単に同じ内容のメールを送るのなら一斉送信をすれば事足りるのですが、
宛先ごとに添付ファイルが異なる場合、一斉送信を使うことができません。

この記事では、オレが実際に仕事で使っているマクロ・VBAを公開しています。
添付ファイルが異なる複数の宛先に一斉送信できるマクロです。

このコードをそのまま使うも良し!アレンジして使うも良し!
いずれにしても、あなたの作業効率がアップするのなら、本望です。

Outlookでファイルを添付してメールを送る方法

ではさっそく、オレが実際に使っているコードを記載します。

エクセルのシート構成

まずはExcelのシート構成です。こんな感じです。

B列5件名
B列6本文
H列9~11送信先アドレス
I列9~11添付ファイル1個目
J列9~11添付ファイル2個目
K列9~11添付ファイル3個目
L列9~11添付ファイル4個目

マクロ・VBAのコード

VBEditorに記載しているマクロはこんな感じです。

H列に記載の送信先(3件)に、それぞれ異なるファイルを添付して送信するマクロです。
添付ファイルの箱は4つ用意しています。空白だったら無視して次に進みます。
なお、添付ファイルはマクロのファイルと同じフォルダに入れておく必要があります。

Sub sendmail()

'変数を定義します
Dim Toaddress As String
Dim Subject As String
Dim Mailbody As String

Dim outlookObj As Outlook.Application
Dim mailitemObj As Outlook.MailItem

Dim i As Integer

Dim AttachedFile As String
Dim AttachedFile2 As String
Dim AttachedFile3 As String
Dim AttachedFile4 As String

For i = 9 To 11 '今回は3人分送ります

 AttachedFile = Range("I" & i).Value
 AttachedFile2 = Range("J" & i).Value
 AttachedFile3 = Range("K" & i).Value
 AttachedFile4 = Range("L" & i).Value

 'Outlookを起動
 Set outlookObj = CreateObject("Outlook.Application")
 Set mailitemObj = outlookObj.createItem(olMailItem)

 '送信元アドレスを設定(Outlookのアカウントが2つ以上の時は設定推奨)
    mailitemObj.SendUsingAccount = Session.Accounts(xxxxxx@mail.com)

 '変数代入
 Toaddress = Range("E" & i).Value
 Subject = Range("B5").Value
 Mailbody = Range("B6").Value
 

 'メール作成
 mailitemObj.bodyformat = 2 'HTMLメールにするための宣言
 mailitemObj.To = Toaddress
 mailitemObj.Subject = Subject
 mailitemObj.Body = Mailbody

 'メール作成 添付ファイルの有無を確認し添付
 If AttachedFile <> "" Then
    mailitemObj.Attachments.Add ThisWorkbook.Path & "\" & AttachedFile
 End If

 If AttachedFile2 <> "" Then
    mailitemObj.Attachments.Add ThisWorkbook.Path & "\" & AttachedFile2
 End If

 If AttachedFile3 <> "" Then
    mailitemObj.Attachments.Add ThisWorkbook.Path & "\" & AttachedFile3
 End If

 If AttachedFile4 <> "" Then
    mailitemObj.Attachments.Add ThisWorkbook.Path & "\" & AttachedFile4
 End If

 'メール送信
 mailitemObj.Send

Next i

MsgBox "END"

End Sub

上記のマクロを始動すれば、Outlookが起動して自動でメールを送信できます。

まとめ

上記のコードは、諸先輩方のコードをつぎはぎして作り上げたものです。
もっと効率の良いコードがあると思います。

いずれにしても、あなたの作業効率がアップすることを願っています。
空いた時間は勉強にあてて、さらなるステップアップをしていきましょう。

コメント

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