Outlookで一覧表の全員にメールを送信する方法

今回の目標

Outlook(classic) で一覧表の全員にメールを送信する方法について解説します。
新年のあいさつなどやDMを送る際に参考になるかと思います。

目標リスト

  • 一覧表の全員にメールを送信できるようになる

Outlookで送る方法について

事前準備

この記事は基本的なメール送信ができる前提で進めます。
基本的な操作が分からない方は次の記事をお読みください。

プログラムについて

今回はサンプルを用いて説明します。
メールの本文やタイトル、宛先、顧客名をシートに書きだします。
[メール]シートのセルC2にタイトル、セルC3に本文を記載しています。 先方の会社名及び顧客名・所属部署は別で設定するので、本文に記載しないようにします。
メールのタイトルと本文
[取引先一覧]シートのF列にメールアドレス、E列に担当者名、D列に所属部署を記載しています。
メールの送信先一覧

メールオブジェクトを For 文の前で取得すると、1つのメールを更新するとなってしまい、メールが1つしか作成されません。
そのため、メールを For 文の中でメールオブジェクトを作成しましょう。

Outlookで一覧表の全員にメールを送信する

サンプルプログラムです。
メールを下書きしていますが、"With olMail"のブロック内のコメントの通り「.Save」を「.Send」とするとメールを送信できます。
テストが終わって問題なく動作することを確認してから、「.Send」に変更してください。

サンプルコード

Sub OutlookMailMultiple()
    Dim olApp As Object
    Dim olMail As Object
    Dim mailWs As Worksheet
    Dim recWs As Worksheet   'recipientName
    Dim i As Long
    Dim endRow As Long
    Dim bodyTemplate As String
    Dim recName As String
    
    ' Outlookオブジェクトを取得する
    Set olApp = CreateObject("Outlook.Application")
    
    ' シートオブジェクトを取得する
    Set mailWs = ThisWorkbook.Worksheets("メール")
    Set recWs = ThisWorkbook.Worksheets("取引先一覧")

    'リストの最終行を取得する
    endRow = recWs.Cells(Rows.Count, 2).End(xlUp).Row
    
    For i = 4 To endRow
        '宛名を設定する
        recName = recWs.Cells(i, 3) & vbCrLf
        recName = recName & recWs.Cells(i, 4) & " " & _
                    recWs.Cells(i, 5) & "様" & vbCrLf
        '宛名と本文を結合する
        bodyTemplate = recName & vbCrLf & mailWs.Range("C3")
        
        'メールを作成する
        Set olMail = olApp.CreateItem(0)
        
        With olMail
            .To = recWs.Cells(i, 6)
            .Subject = mailWs.Range("C2")
            .Body = bodyTemplate
            .Save   '← 確認せず、送信する場合「.Send」とする
        End With
        '念のため、オブジェクトを解放
        Set olMail = Nothing
    Next i
    
    Set olApp = Nothing
End Sub

出力結果

取引先一覧の全員宛に下書きを作成します。
確認する時は Outlook を開いてください。
※ プログラム実行後に、Outlook を表示させていません。

関連リンク

ページの先頭へ