メールを一括送信できるツールをマクロで作成してみたので紹介します。以前、こちらの記事にて一斉送信のマクロを紹介しましたが、今回はパソコンにインストールされたOutlookからメールを送信させるマクロとなります。
Outlookと連携させることで、送付したメールが送信済みアイテムに残り、内容を後から確認できます。また、前回の記事で紹介したマクロとは異なり、文字化けがほとんど発生しません。Outlookがパソコンにインストールされているのであれば、是非こちらのマクロを試してみてください。
このツールでは以下の機能が利用できます。
(1)送付先リストの宛先に対してメールを一括信可能
(2)送付先リストの宛先毎に本文の宛名を変更可能
(3)宛先、CC、BCCが複数指定可能
(4)最大3つのファイルを添付可能
では利用手順を紹介していきます。 ※すべて自己責任でお願いします。
1. マクロのダウンロードと編集
こちらからファイルをダウンロードしてください。ファイルを開き「Alt + F11」を押してエディターを立ち上げてください。「標準モジュール」を開き以下のソースコードにて【】で囲まれた箇所を環境に合わせて編集してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
[vb] Sub cmd送信() If vbYes = MsgBox("実行しますか?", vbYesNo) Then Else MsgBox "処理を中止しました。" Exit Sub End If 'エラーが発生したら処理を行なう On Error GoTo Err_Shori '---コード1|outlookを起動する Dim toaddress, ccaddress, bccaddress As String '変数設定:from宛先、To宛先、cc宛先、bcc宛先 Dim subject, mailBody, credit As String '変数設定:件名、メール本文、クレジット、添付 Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mailItemObj As Outlook.mailItem 'Outlookで使用するオブジェクト生成 Dim objFso As Object 'ログ Set objFso = CreateObject("Scripting.FileSystemObject") '---コード2|差出人、本文、署名を取得する--- ccaddress = Sheets("送信").Range("F5") 'cc宛先 bccaddress = Sheets("送信").Range("G5") 'bcc宛先 subject = Sheets("送信").Range("E2") '件名 mailBody = Sheets("本文").Range("A1") 'メール本文 credit = Sheets("本文").Range("O1") '署名 account = Sheets("送信").Range("E5") '---コード3|メールを作成して、差出人、本文、署名を入れ込む--- Dim MaxRow: MaxRow = Range("A1").End(xlDown).Row For i = 2 To MaxRow Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = 1 'テキストに変更 toaddress = Sheets("送信").Cells(i, 1) 'To宛先 mailBody = Replace(Sheets("本文").Cells(1, 1).Value, "〇〇〇〇", Sheets("送信").Cells(i, 2).Value) mailBody = Replace(mailBody, "△△△△", Sheets("送信").Cells(i, 3).Value) mailItemObj.To = toaddress mailItemObj.SendUsingAccount = Session.Accounts(account) mailItemObj.cc = ccaddress 'cc宛先をセット mailItemObj.BCC = bccaddress 'bcc宛先をセット mailItemObj.subject = subject '件名をセット mailItemObj.Body = mailBody & vbCrLf & vbCrLf & credit 'メール本文 改行 改行 クレジット '---コード4|自動で添付ファイルを付ける--- Dim path As String Dim attached1 As String Dim attached2 As String Dim attached3 As String Dim myattachments As Outlook.Attachments 'Outlookで使用するオブジェクト生成 Set myattachments = mailItemObj.Attachments path = "【添付ファイルの場所(例:C:\Users\tesu.user\Desktop\)】" If Sheets("送信").Range("E9") <> "" Then attached1 = path & Sheets("送信").Range("E9") '添付ファイル① myattachments.Add attached1 End If If Sheets("送信").Range("F9") <> "" Then attached2 = path & Sheets("送信").Range("F9") '添付ファイル② myattachments.Add attached2 End If If Sheets("送信").Range("G9") <> "" Then attached3 = path & Sheets("送信").Range("G9") '添付ファイル③ myattachments.Add attached3 End If '---コード5|メールを送信する--- mailItemObj.Send 'メール送信 'mailItemObj.Display メール表示(ここでは誤送信を防ぐために表示だけにして、メール送信はしない) 'ログ書き込み With objFso.OpenTextFile("【ログファイルの場所(例:C:\Users\tesu.user\Desktop\log.txt)】", 8) .WriteLine Now & vbTab & Sheets("送信").Cells(i, 2).Value & "様への送付が完了しました。" .Close End With Next i '---コード6|outlookを閉じる(オブジェクトの解放)--- Set outlookObj = Nothing Set mailItemObj = Nothing Set objFso = Nothing MsgBox "送信に成功しました。", vbOKOnly + vbInformation, "完了" Err_Shori_Exit: Exit Sub 'ここからエラー処理 Err_Shori: MsgBox Err.Description, vbOKOnly + vbCritical, "実行時エラー" Resume Err_Shori_Exit 'ここまで End Sub [/vb] |
2. シートの入力
入力についてはシートに補足を入れてありますが、こちらでも記載しておきます。
① 送信シート
【宛先】:送付先メールアドレスを入力してください。1通のメールに複数の送付先を適用させたい場合は、アドレスをカンマ区切りで入力してください。
【会社名】:本文の宛名に表示される会社名を入力してください。相手方が個人の場合は未入力で大丈夫です。
【担当者名】:本文の宛名に表示される担当者名を入力してください。
【件名】:件名を入力してください。
【FROM】:送信元を入力してください。Outlookでアカウント追加されたアドレスのみ指定できます。※必須
【CC】:CCを入力してください。複数ある場合はカンマ区切りで入力してください。
【BCC】:BCCを入力してください。複数ある場合はカンマ区切りで入力してください。
【添付ファイル①~③】:添付ファイル名(拡張子含む)を入力してください。最大3つまで添付できます。※①から順に入力してください。
【メール送信ボタン】:処理を実行するボタンです。メールが送信されます。
② 本文シート
【本文】:メール本文を入力してください。〇〇〇〇が送信シートで入力した「会社名」、△△△△が「担当者名」に置換されます。
【署名】:署名を入力してください。
まとめ
メールの一括送信については、有料でソフトを購入し実施することも可能です。そちらの方が使いやすいでしょうし、不具合も起こりにくいかと思われます。メルマガ等のメール一括送信にお金をかけたくないのであれば、是非このツールを使用してみてください。