はじめに
前回に引き続いて今回もVBAマクロによるメール作業の自動化を勉強しましょう!
これまた前科に引き続きご紹介ですが、某調査によると、メールの処理(閲覧・送信)に1日に平均2.8時間もの時間を費やしているという報告もあります。
この面倒なメール作業を自動化する方法を考えましょう!
本記事ではExcelの顧客管理一覧をもとにVBAからOutlookを操作して受注確認メールを送付する流れをご説明します。時間泥棒のメール作業から自動化によって開放されて、定時退社を目指しましょう!
VBAマクロでExcelの顧客管理からメールを送信する本記事の目的
前回の記事でVBAマクロからOutlookを起動してメールを送信する基本的な処理を紹介しました。
本記事ではExcelの顧客管理一覧をもとにVBAからOutlookを操作して受注確認メールを送付する流れをご説明します。
ただし、前回同様に本当に送信してしまうと問題がありますので、作成したメールの内容を表示するにとどめます。
前回同様、本当に送信する場合はサンプルプログラムでコメントアウトされている.sendメソッドの’を外して実行してください。ただしくれぐれも慎重に自己責任でお願いいたします。
VBAマクロでExcelの顧客管理からメールを送信する処理の流れ
処理の流れとしては、
Outlookのメールオブジェクトを作成する
↓
顧客管理一覧よりメールを作成する行を選び、メールアドレス、名前などを変数に格納する
↓
変数に格納した内容を各種プロパティに入力する
↓
作成したメールを表示する
↓
メールを送信する(この部分はコメントアウトされているので実行されません)
という流れになります。
VBAマクロでExcelの顧客管理からメールを送信する関数・プロパティなど
MailItem オブジェクトにはたくさんのメソッドやプロパティがあります。
今回は超基本の.Toプロパティを参照しますが、送り先のメールアドレスです。
その他、プロパティには表題を表すSubjectや本文を表す.Bodyなどがあります。
詳しい内容はリンクのリファレンスにまとまっておりますのでご参照ください。
VBAマクロでExcelの顧客管理からメールを送信するサンプルコード
それではサンプルコードです。
Excelで作った顧客一覧から、情報を取得してOutlookのメールを作成しています。
Sub 顧客管理より送信() Dim mail As String Dim name As String Dim product As String Dim quantity As Integer Dim price As Integer Dim colnum As Integer rownum = Application.InputBox(Title:="レコード選択", Prompt:="メールを作成するレコードの行数を入力してください", Type:=1) If rownum = False Then MsgBox "キャンセルされました。再度やり直してください。" Exit Sub ElseIf rownum <= 1 Then MsgBox "指定の行で書類を作成することはできません。" Exit Sub End If mail = Cells(rownum, 1) name = Cells(rownum, 2) product = Cells(rownum, 3) quantity = Cells(rownum, 4) price = Cells(rownum, 5) Dim myOL As Outlook.Application Dim myML As Outlook.MailItem Set myOL = CreateObject("Outlook.Application") Set myML = myOL.CreateItem(olMailItem) myML.SentOnBehalfOfName = "自動化くだもの店<furuit@jidouka.com>" myML.To = mail myML.Subject = name & "様 ご注文ありがとうございます" myML.Body = name & "様 この度は当店よりご注文ありがとうございます。" _ & vbCr & "以下ご注文詳細ご確認ください。" _ & vbCr & product & quantity & "個のご注文で、商品代金" & price & "円となります。" _ & vbCr & "またのご利用をお待ちしております。" myML.display 'myML.send Set OL = Nothing Set myML = Nothing End Sub
Excelの顧客一覧
作成されたOutolookのメール
終わりに
本記事ではExcelの顧客管理一覧をもとにVBAからOutlookを操作して受注確認メールを送付する流れをご紹介しました。
前回に続きあえて送信はせず、送信部分はコメントアウトしました。
本記事のサンプルではレコードを行単位で選ぶ形としましたが、例えばfor文を使ってメールを送る処理を顧客データ文繰り返せば受注確認メールの送信を完全に自動化することができるでしょう。本記事のサンプルをいろいろいじって、メール作業の自動化を達成しましょう!