メールを自動化して定時退社!VBAマクロでExcelの顧客管理からメールを送信する方法【サンプル有り】

はじめに

前回に引き続いて今回もVBAマクロによるメール作業の自動化を勉強しましょう!

これまた前科に引き続きご紹介ですが、某調査によると、メールの処理(閲覧・送信)に1日に平均2.8時間もの時間を費やしているという報告もあります。

この面倒なメール作業を自動化する方法を考えましょう!

本記事ではExcelの顧客管理一覧をもとにVBAからOutlookを操作して受注確認メールを送付する流れをご説明します。時間泥棒のメール作業から自動化によって開放されて、定時退社を目指しましょう!

VBAマクロでExcelの顧客管理からメールを送信する本記事の目的

前回の記事でVBAマクロからOutlookを起動してメールを送信する基本的な処理を紹介しました。

本記事ではExcelの顧客管理一覧をもとにVBAからOutlookを操作して受注確認メールを送付する流れをご説明します。

ただし、前回同様に本当に送信してしまうと問題がありますので、作成したメールの内容を表示するにとどめます。

前回同様、本当に送信する場合はサンプルプログラムでコメントアウトされている.sendメソッドの’を外して実行してください。ただしくれぐれも慎重に自己責任でお願いいたします。

VBAマクロでExcelの顧客管理からメールを送信する処理の流れ

処理の流れとしては、

Outlookのメールオブジェクトを作成する

顧客管理一覧よりメールを作成する行を選び、メールアドレス、名前などを変数に格納する

変数に格納した内容を各種プロパティに入力する

作成したメールを表示する

メールを送信する(この部分はコメントアウトされているので実行されません)

という流れになります。

VBAマクロでExcelの顧客管理からメールを送信する関数・プロパティなど

MailItem.To プロパティ (Outlook)

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文を使ってメールを送る処理を顧客データ文繰り返せば受注確認メールの送信を完全に自動化することができるでしょう。本記事のサンプルをいろいろいじって、メール作業の自動化を達成しましょう!