ExcelでOutlookメールを一括送信するマクロとは?効率的な方法を解説!

コンテンツ
IT・テクノロジー
ビジネスでメールを一括送信する場面では、手作業で送信するのは非常に時間がかかります。このような場面で活躍するのが、ExcelとOutlookを連携させたマクロの活用です。しかし、どのようにマクロを作成し、使用すれば良いか分からない方も多いのではないでしょうか?

例えば、取引先に一括で案内メールを送る場合、宛先や本文を一つひとつ入力していると効率が悪く、ミスの原因にもなりかねません。

この記事では、ExcelでOutlookメールを一括送信するマクロの作成手順を具体的に解説します。これを学ぶことで、作業時間を短縮し、正確かつスピーディーにメールを送信できるようになります。

このマクロを使うと下記の画像のように一斉送信できるようになります。


メール送信1.jpg
Sheet1
メール送信2.jpg
Sheet2
メール送信3.jpg
マクロ実行後メールプレビュー

さっそく、具体的な手順をみていきましょう。

必要な準備
①Excelファイルを用意する
Sheet1↓
メール送信1.jpg
上記の画像を参考に同じように編集してください
Sheet2↓
メール送信2.jpg
1行目はヘッダーです。
本文と件名は2行目に入力してください。

②Outlookがインストールされていることを確認します。
③VBAを有効化し、マクロを実行できるようにします。
④下記のコードを標準モジュールに貼り付けてください。


Sub SendEmails()
    Dim OutlookApp As Object
    Dim MailItem As Object
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim lastRow As Long, i As Long
    Dim companyName As String, personName As String, emailAddress As String
    Dim emailSubject As String, emailBody As String
    Dim senderCompany As String, senderName As String
    ' Set worksheets
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("Sheet2")
    ' Get email subject and body from Sheet2
    emailSubject = ws2.Range("A2").Value ' Assuming the subject is in A2
    emailBody = ws2.Range("B2").Value ' Assuming the body is in B2
    ' Get sender information from Sheet1 cells C1 and D2
    senderCompany = ws1.Range("C1").Value
    senderName = ws1.Range("D2").Value
    ' Get the last row of data in Sheet1
    lastRow = ws1.Cells(ws1.Rows.Count, "C").End(xlUp).Row
    ' Initialize Outlook application
    On Error Resume Next
    Set OutlookApp = CreateObject("Outlook.Application")
    On Error GoTo 0
    If OutlookApp Is Nothing Then
        MsgBox "Outlook is not available.", vbExclamation
        Exit Sub
    End If
    ' Loop through each row in Sheet1 to send emails
    For i = 2 To lastRow
        companyName = ws1.Cells(i, 3).Value
        personName = ws1.Cells(i, 4).Value
        emailAddress = ws1.Cells(i, 5).Value
        If emailAddress <> "" Then
            ' Create a new email
            Set MailItem = OutlookApp.CreateItem(0)
            With MailItem
                .To = emailAddress
                .Subject = emailSubject
                .Body = companyName & vbTab & personName & "様" & vbNewLine & _
                        "お世話になっております。" & vbNewLine & _
                        senderCompany & " " & senderName & "です。" & vbNewLine & vbNewLine & _
                        Replace(Replace(emailBody, "{{会社名}}", companyName), "{{氏名}}", personName)
                .Display ' Use .Display to review before sending
            End With
            ' Clear the MailItem object
            Set MailItem = Nothing
        End If
    Next i
    ' Cleanup
    Set OutlookApp = Nothing
    MsgBox "Emails have been prepared successfully!", vbInformation
End Sub


使用時の注意点
マクロの有効化
Excelファイルをマクロ有効ブック(.xlsm形式)で保存してください。

信頼性のあるマクロの使用
セキュリティ上の理由から、信頼できるソースのマクロのみを使用してください。

一括送信の応用例
上記のコードに加え、添付ファイルの送信やBCCの設定などを加えることで、さらに便利に活用できます。

カスタムが必要な方はお気軽にご相談ください。

ExcelとOutlookの連携による作業効率化
ここまでお伝えした内容を使用することで、Outlookからのメール送信が格段に効率化されます。特に、大量のメールを手作業で送信する必要がある場合、このマクロが大いに役立つでしょう。

次は、実際にマクロを作成して試してみましょう。操作を繰り返すことで、より深い理解と応用力が身に付きます。

まとめ
この記事では、ExcelとOutlookを連携させたマクロを使用して、一括でメールを送信する方法をお伝えしました。

VBAコードを使用した基本的なメール送信
宛先、件名、本文をExcelに記載し、自動でメールを送信するマクロを紹介しました。

応用例としての添付ファイルの送信
ファイルを添付する方法を加えることで、より実用的に。

この方法を活用することで、日々の業務効率を大幅に向上させることができます。ぜひ、自分の業務に合わせたマクロを作成し、作業を効率化してみてください。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら