Excelスプレッドシートから複数のメールを一括送信する2つの簡単な方法
Excelのワークシートには、さまざまな情報を保存しています。例えば、取引先や重要な担当者のメールアドレスを管理している方も多いのではないでしょうか。必要に応じてこれらのアドレス宛てにメールを送る場面は少なくありませんが、いちいちアドレスをコピー&ペーストしていては手間も時間もかかってしまいます。
そこで本記事では、Excelスプレッドシートから複数のメールを効率よく送信する方法を、初心者でも実践しやすい2つの手法でわかりやすく解説します。
Excelから複数のメールを送信する2つの簡単な方法
説明にはサンプルデータを使用します。以下のデータセットには、営業担当者(Salesman)とそのメールアドレスが記録されています。このリストをもとに、全員へメールを送信する流れを見ていきましょう。

方法1:Wordの「差し込み印刷」機能を使う
最初の方法では、Microsoft Wordの差し込み印刷(Mail Merge)機能を活用して、Excelスプレッドシートのアドレス一覧から複数のメールを送信します。以下の手順に沿って進めてください。
手順:
- まず、Wordで新規ファイルを開きます。
- 次に、送りたいメッセージ本文を入力します。
- 続いて、差し込み文書 ➤ 宛先の選択 ➤ 既存のリストを使用 を選択します。

- すると、データファイルの選択ダイアログボックスが表示されます。
- メールアドレスが保存されているExcelファイルを選択します。
- 開くをクリックします。

- 次に、テーブルの選択ダイアログボックスが表示されるので、対象のシートを選んでOKを押します。

- ここで、受信者ごとに置き換えたい部分を選択します。この例では「Wilham」という名前を選びます。
- 差し込み文書タブの差し込みフィールドの挿入ドロップダウンからSalesmanを選択します。

- これで、下図のように各受信者の名前が自動的に差し込まれたメッセージになります。

- 受信者側から見たプレビューを確認したい場合は、結果のプレビューをクリックします。

- 完了してマージドロップダウンから電子メールメッセージを送信するを選択します。

- 電子メールへのマージダイアログボックスが表示されます。
- 宛先(To)フィールドでヘッダーのEmail列を指定し、必要に応じて件名(例:「Greetings」)を入力します。
- 最後にOKを押すと、すべての受信者へメールが送信されます。

方法2:Excel VBAを使って複数のメールを送信する
一方、VBAコードを使えば、より柔軟かつ自動的に処理を行えます。ここでは、Excel VBAでスプレッドシートから複数のメールを送信する3つのパターンをご紹介します。
2.1 リスト全体への一括メール送信
まずは、同じ内容のメッセージをリスト内の全員にまとめて送る方法です。以下の手順で実行できます。
手順:
- まず、開発 ➤ Visual Basic を選択します。

- VBAエディタ画面が開きます。
- 挿入 ➤ 標準モジュール を選択します。
- 以下のコードをコピーして、モジュールウィンドウに貼り付けます。
Sub massEmails()
Dim appOutlook As Object
Dim Email As Object
Dim mailbody, mailto As String
Dim i, j As Integer
Set appOutlook = CreateObject("Outlook.Application")
Set Email = appOutlook.CreateItem(olMailItem)
For i = 2 To 5
mailto = mailto & Cells(i, 2) & ";"
Next i
ThisWorkbook.Save
Email.To = mailto
Email.Subject = "Important Notice"
Email.Body = "Greetings Everyone," & vbNewLine & "Please go through the Company Rules." & vbNewLine & "Regards."
Email.Display
End Sub
- ファイルを保存し、F5キーを押してコードを実行します。
- Outlookのウィンドウが開き、宛先(To)欄にすべての受信者が表示されます。
- 最後に送信をクリックすれば完了です。

2.2 複数の添付ファイル付きメールを送信する
次に、複数のファイルを添付して、複数のメールアドレスへ送信したい場合の手順です。
手順:
- まず開発タブをクリックします。
- Visual Basicを選択します。
- VBAウィンドウで、挿入から標準モジュールを選びます。
- モジュールウィンドウに、以下のコードをコピー&ペーストします。
Sub attachments()
Dim appOutlook As Object
Dim Email As Object
Dim source, mailto As String
Dim i, j As Integer
Set appOutlook = CreateObject("Outlook.Application")
Set Email = appOutlook.CreateItem(olMailItem)
For i = 2 To 5
mailto = mailto & Cells(i, 2) & ";"
Next i
For j = 2 To 5
source = "D:\SOFTEKO\how to send multiple emails from excel spreadsheet\" & Cells(j, 3)
Email.attachments.Add source
Next
ThisWorkbook.Save
source = ThisWorkbook.FullName
Email.attachments.Add source
Email.To = mailto
Email.Subject = "Important Sheets"
Email.Body = "Greetings Everyone," & vbNewLine & "Please go through the Sheets." & vbNewLine & "Regards."
Email.Display
End Sub
- 保存後、F5キーでコードを実行します。
- Outlookウィンドウが開き、指定したファイルが添付されているのが確認できます。

2.3 セルの値に基づいてメールを自動送信する
最後に、特定のセルの値が条件と異なる場合に、Excelが自動的に複数のアドレスへメールを送る方法をご紹介します。以下のデータセットでは、セルB5に50が入力されています。この値が100未満になったときにメールを送信するコードを作成します。

手順:
- まず、対象のシート上で右クリックします。
- コードの表示(View Code)を選択します。

- 表示されたダイアログボックスに、以下のコードをコピー&ペーストします。
Dim rn As Range
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set rn = Intersect(Range("B5"), Target)
If rn Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value < 100 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub MailCellvalues()
Dim appOutlook As Object
Dim Email As Object
Dim mailbody, mailto As String
Dim i, j As Integer
Set appOutlook = CreateObject("Outlook.Application")
Set Email = appOutlook.CreateItem(olMailItem)
For i = 2 To 5
mailto = mailto & Cells(i, 3) & ";"
Next i
ThisWorkbook.Save
Email.To = mailto
Email.Subject = "Important Notice"
Email.Body = "Greetings Everyone," & vbNewLine & "Please raise B5 above 100." & vbNewLine & "Regards."
Email.Display
End Sub
- ファイルを保存し、F5キーを押して実行します。
- Outlookウィンドウに結果が表示されます。

まとめ
以上、Excelスプレッドシートから複数のメールを送信する2つの方法を解説しました。Wordの差し込み印刷なら直感的に操作でき、VBAを使えば添付ファイルや条件分岐など高度な自動化にも対応できます。用途に合わせて使い分けてみてください。他におすすめの方法があれば、ぜひコメント欄でお知らせください。ご質問やご意見もお待ちしております。
-
Excelでデータモデルからデータを取得する2つの簡単な方法
Excelのデータモデルからデータを取り出す便利なテクニックをお探しの方は、ぜひこの記事をご覧ください。データモデルからデータを取得する方法は実にさまざまありますが、本記事では代表的な2つの方法を詳しく解説します。手順を一つずつ丁寧に追って説明しますので、最後まで読んでマスターしましょう。 データモデルとは? データモデルはデータ分析において欠かせない機能です。データモデルを使うと、テーブルなどのデータをExcelのメモリ上に読み込むことができます。さらに、共通の列(キー列)を指定することで、複数のテーブル同士を関連付けることも可能です。データモデルにおける「モデル」という言葉は、各テーブル間
-
Excelで複数の色を条件にデータをフィルターする2つの簡単な方法
この記事では、Microsoft Excelで複数の色を条件にデータをフィルターする方法を解説します。通常、特定の列を複数の色でフィルターすると、他の列も最初に適用したフィルターの影響を受けてしまい、思い通りの結果が得られないことがあります。色による複数条件のフィルタリングは少し工夫が必要ですが、この記事では誰でも実践できる2つの方法を、わかりやすい手順とともに紹介します。 Excelで複数の色を条件にフィルターする2つの方法 ここでは、営業担当者の氏名、担当地域、売上高がそれぞれB列・C列・E列に入力されたサンプルデータセットを使用します。このデータには、セルごとに異なる色が設定されています