今回はExcelVBAを活用してOutlookのメール送信をする方法を紹介します。
Excelにメール文面や宛先情報を準備して一度に送信できるので、複数の人にメールを送りたい時に便利です。
Outlookを自動化するメリットとデメリット
メリットに書きましたが、OutlookのVBAを一度作ってしまえばボタン一つでメールを送信できるようになるため、メール作成の時間を大幅に削減できます。
Excel上でto,cc,bccの送信先情報を一度に確認できるので、送り先間違いを防ぐことができます。
送信テンプレートを用意することで汎用性を持たせていますが、VBAに対して最低限の知識がないとOutlookk自動化のマクロを組むことは難しいかもしれません。
サンプルコード
今回も押したボタンで処理を分岐するようにしています。
| 
					 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  | 
						Sub Sample()     Dim Outlook As Outlook.Application     Dim Mail As Outlook.MailItem     Dim Ws1 As Worksheet, Ws2 As Worksheet     Dim Button_Text As String     Dim Attach As String       '添付ファイル     Dim i As Long: i = 1     Set Outlook = New Outlook.Application     Set Ws1 = ThisWorkbook.Sheets("送信テンプレート")     Set Ws2 = ThisWorkbook.Sheets("受信先情報")     '押されたボタンを判定     Button_Text = Ws2.Buttons(Application.Caller).Text     '3行目が空になるまで繰り返す     Do While Ws2.Cells(i, 3) = ""         i = i + 1         'Outlookメールを作成         Set Mail = Outlook.CreateItem(olMailItem)         '送信先の情報を設定         With Ws2             Mail.To = .Cells(7, i)        '送り先             Mail.CC = .Cells(8, i)       'cc             Mail.BCC = .Cells(9, i)     'bcc             Mail.Subject = .Cells(10, i) '件名             Mail.Body = .Cells(3, i) & Chr(10) & .Cells(4, i) & " " & .Cells(5, i) & _                 Chr(10) & .Cells(6, i) & Chr(10) & Chr(10) & Ws1.Cells(7, 2) & _                 Chr(10) & Chr(10) & .Cells(11, i) & Chr(10) & Ws1.Cells(8, 2)  '本文             Attach = .Cells(12, i).Value '添付ファイル             '添付ファイル判定             If Attach <> "" Then                 Mail.Attachments.Add Attach             End If             Mail.BodyFormat = olFormatPlain     'メールの形式         End With         '押したボタンで処理を分岐         If Button_Text = "一括送信" Then             'メール送信             Mail.Send         Else             'メールプレビュー             Mail.Display         End If     Loop     'オブジェクトを初期化     Set Outlook = Nothing     '送信件数を表示     If Button_Text = "一括送信" Then         MsgBox i - 1 & "件の送信が完了しました。"     End If End Sub  | 
					
初回はコンパイルエラーでVBAが動かない可能性があります。
そんな時はこちらの記事を参考にしてください。
Excelのデザイン
Excelには「送信テンプレート」と「受信先情報」の2シートを用意しました。
※サンプルコードをコピペする場合はシート名を変更しないでください。

今回もボタン名で処理を判別しているため、基本的にボタン名の変更はしないようにしてください。
どうしてもボタン名を変更したい場合は、コード内の「一括送信」の部分を変更したボタン名に書き換えてください。
「一括送信」ボタンを選択した場合は3行目が空になるまで右に移動しながらメールを送信します。
「プレビュー」ボタンを押した場合はメールのプレビュー画面が表示されるので、どのような形式で送信されるのか確認できます。

プレビュー
プレビューで実際のメール作成画面が表示されます。

いきなり一括送信されるのはちょっと不安…と言う場合はプレビューで確認してくみてください!
ここでは下記項目がどのように設定されるのかOutlookの画面で確認できます。
サンプルでは架空のアドレスを設定しているためそのまま送ることができませんが、実在するアドレスであれば、「プレビュー」で本文のデザインを確認してそのまま「送信」することも可能です。

プレビューからそのまま送信してみるとこんな感じに届きます。

添付ファイルも一緒に送信できます!

送信後のメッセージボックスで何件のメールを送信したのか確認できます。






