Excelのリストからメールを一括送信する2つの効果的な方法
大勢の人に一括メールを送りたいとき、繰り返し作業を素早く処理できる自動化の仕組みが必要になります。メールアドレスの一覧をまとめたExcelファイルを作成するのが、一括メール送信の最も一般的な方法です。このチュートリアルでは、Excelのリストから多数の相手へ自動的にメールを送信する方法を、2つのアプローチで詳しく解説します。
Excelリストからメールを送信する2つの便利な方法
下の画像には、氏名・メールアドレス・登録番号を含むデータセットが用意されています。このExcelリストから、それぞれの相手に個別のメールを送信していきます。そのために、まずMicrosoft Wordの差し込み印刷機能を使う方法を紹介し、続いてVBAコードで既存のリストから対象者へメールを送る方法を説明します。

1. 差し込み印刷機能でExcelリストから複数のメールを送信する
⇒ ステップ1:新しいWordファイルを開く
- 空白のWord文書を開きます。
- 「差し込み文書」タブをクリックします。
- 「宛先の選択」から「既存のリストを使用」を選択します。

⇒ ステップ2:ExcelリストをWordファイルにリンクする
- リストを作成したExcelファイルを選択し、「開く」をクリックしてファイルを開きます。

- リストが記載されているシート番号を選択します。
- 「OK」をクリックします。

⇒ ステップ3:フィールドを挿入する
- 「差し込み文書」から「差し込みフィールドの挿入」をクリックし、挿入したいフィールドを選択します。
- まず「名前」フィールドをクリックして、メール本文の任意の位置に挿入します。

- 下の画像のように、「名前」フィールドを追加すると、各受信者の名前に置き換わる変数として表示されます。

- 同様に、「登録番号」フィールドも本文中の任意の場所に配置します。

- すると、下の画像のように表示されます。

⇒ ステップ4:プレビュー結果を確認する
- 送信前に仕上がりを確認するには、「結果のプレビュー」をクリックします。
- 下のスクリーンショットは、サンプルメールの実際の見え方です。

⇒ ステップ5:メールを差し込んで送信する
- 「完了と差し込み」オプションをクリックします。
- 「電子メールメッセージを送信」を選択すると、「電子メールに差し込み」ダイアログが開きます。

- 「宛先」ボックスで「Email」オプションを選択します。
- 「件名」ボックスに希望する件名を入力します。
- メール形式はデフォルトでHTMLになっているため、変更は不要です。
- 「送信するレコード」で「すべて」を選択します。
- 最後に「OK」をクリックすると、複数の受信者へ同時にメールが送信されます。

- これにより、すべてのメールが連携済みのOutlook経由で送信されます。Outlookの送信済みアイテムを確認して、メールが正しく送られたかチェックしましょう。

- 送信済みメールを開くと、各フィールドに受信者ごとの情報が正しく反映されていることが確認できます。

注意: Microsoft Outlookが既定のメールアプリケーションとして設定されている必要があります。別のメールソフトを使用している場合、この手順ではメールを送信できませんのでご注意ください。
あわせて読みたい: Excelで条件を満たしたときにメールを自動送信する方法
類似記事
- 編集可能なExcelスプレッドシートをメールで送信する方法(3つのクイックメソッド)
- [解決済み]:Excelで「ブックの共有」が表示されない問題(簡単な手順付き)
- VBAを使ってExcelワークシートからリマインダーメールを自動送信する方法
- 共有Excelファイル内のユーザーを確認する方法(クイックステップ付き)
- Excelでブックの共有を有効にする方法
2. VBAコードを実行して選択範囲からメールを送信する
VBAを活用すれば、Excelリストから任意の範囲を選択してメールを送信するプログラムを作成できます。以下の手順に従って実装してみましょう。
⇒ ステップ1:モジュールを作成する
- Alt+F11キーを押してVBAエディターを開きます。
- 「挿入」タブをクリックします。
- 「標準モジュール」を選択してモジュールを作成します。

⇒ ステップ2:VBAコードを貼り付ける
- 新しく作成したモジュールに、以下のVBAコードを貼り付けます。
#If VBA7 And Win64 Then
'Ptr is used to change for operating 32 bit to 64 bit
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal wnd As LongPtr, ByVal lpDirect As String, _
ByVal Parameters As String, ByVal File As String, ByVal Operation As String, _
ByVal nCmd As Long) As LongPtr
#Else
#End If
Sub SendExcelListEMail()
'Declare the variables
Dim xMailAdd As String
Dim xRegCode As String
Dim xBody As String
Dim xURLink As String
Dim xRngCell As Range
Dim xIntRg As Range
Dim xSelectTxt As String
Dim k As Integer
Dim p As Double
On Error Resume Next
'Select range select adddress
xSelectTxt = ActiveWindow.RangeSelection.Address
'Create a Input box for the range selection
Set xIntRg = Application.InputBox("Please Input Excel data range:", "ExcelDemy", xSelectTxt, , , , , 8)
'Apply If condition to specify column numbers for the operation
If xIntRg Is Nothing Then Exit Sub
If xIntRg.Columns.Count <> 3 Then
'Show the result in a msg box for not meeting the condition
MsgBox "Error with Region Selection, please confirm", , "ExcelDemy"
Exit Sub
End If
'Apply For loop to run operation in each row individually
For k = 1 To xIntRg.Rows.Count
' Collect the email address and set to the variable
xMailAdd = xIntRg.Cells(k, 2)
' Give a subject for the Email
xRegCode = "ExcelDemy Registration No."
' Type the body of the email
xBody = ""
' Insert Names with the variable xIntRg
xBody = xBody & "Greetings " & xIntRg.Cells(k, 1) & "," & vbCrLf & vbCrLf
xBody = xBody & " Here is your ExcelDemy Registration No. "
' Insert Registration No. with the variable xIntRg
xBody = xBody & xIntRg.Cells(k, 3).Text & "." & vbCrLf & vbCrLf
xBody = xBody & "We are really glad to have you visit in our site, keep supporting us." & vbCrLf
xBody = xBody & "ExcelDemy Team"
' Define spaces with (hex)
xRegCode = Application.WorksheetFunction.Substitute(xRegCode, " ", "%20")
xBody = Application.WorksheetFunction.Substitute(xBody, " ", "%20")
' Specify to replace carriage returns with(hex)
xBody = Application.WorksheetFunction.Substitute(xBody, vbCrLf, "%0D%0A")
' Generate the URL Link
xURLink = "mailto:" & xMailAdd & "?subject=" & xRegCode & "&body=" & xBody
' Use the Link to start emailing
ShellExecute 0&, vbNullString, xURLink, vbNullString, vbNullString, vbNormalFocus
' three seconds interval for sending keystrokes
Application.Wait (Now + TimeValue("0:00:03"))
Application.SendKeys "%s"
Next
End Sub

⇒ ステップ3:プログラムを実行する
- F5キーを押してプログラムを実行します。
- 入力ボックスで送信対象の範囲を選択します。
- 「OK」をクリックしてメールを送信します。

- その結果、下の画像のようにメール送信のプレビュー画面が順次表示されます。

- 最後に、送信済みアイテムを確認して完了です。

あわせて読みたい: Excelで条件を満たした場合にメールを送信する方法(3つの簡単な方法)
まとめ
この記事では、Excelのリストから一括メールを送信する方法をチュートリアル形式で解説しました。紹介した両方の手順を学び、ぜひご自身のデータセットに応用してみてください。練習用ワークブックを活用すれば、これらのスキルをすぐに試すことができます。皆様の貴重なサポートこそが、私たちがこうしたチュートリアルを作り続ける原動力となっています。
ご不明な点があれば、お気軽にお問い合わせください。また、下のコメント欄への投稿も歓迎します。
Exceldemyチームは、いつでも皆様のご質問にお答えできるよう待機しています。
今後とも当サイトをお楽しみに。学びを止めないでいきましょう。
関連記事
- ExcelからOutlookへ自動メールを送信する方法(4つの方法)
- マクロを使ってExcelから本文付きメールを送信する方法(簡単な手順付き)
- Excelマクロ:セル内のアドレスにメールを送信する(2つの簡単な方法)
- 日付に基づいてExcelから自動的にメールを送信する方法
- Excelスプレッドシートから複数のメールを送信する方法(2つの簡単な方法)
- 本文付きでExcelからメールを送信するマクロ(3つの便利なケース)
-
Excelでメールリンクを削除する7つの簡単な方法
Excelのワークシートにメールアドレスを入力すると、自動的にリンク(ハイパーリンク)に変換されてしまいます。この自動変換を解除したいとお悩みの方に向けて、本記事ではExcelでメールリンクを削除する方法を詳しく解説します。 Excelでメールリンクを削除する7つの方法 以下のデータセットを使って手順を説明します。このデータには社員ID、氏名、メールアドレスが含まれており、メールアドレスはリンクとして挿入されています。これから7つの方法でメールリンクを削除する手順を紹介していきます。 方法1:「ハイパーリンクの編集」でメールリンクを削除する まず、「ハイパーリンクの編集」ダイアログボックスを
-
匿名でメールを送信する方法|プライバシーを守る3つの実践テクニック
Gmail、Outlook、Yahoo!メールなど、大手インターネット企業が運営する高機能なメールクライアントは市場に数多く存在します。しかし、こうしたプラットフォームはユーザーの行動や他のオンライン活動を追跡・監視しようとするため、多くのユーザーはオンラインのプライバシーに対して不安を感じています。 通常、メールは双方向のコミュニケーション手段として使われますが、身元を明かさずにメールを送受信したい場面もあるでしょう。その理由は完全に正当なものであり得ます。単にプライバシーを大切にしたい、アカウント登録時に個人情報を提供したくない、あるいは決して追跡されたくない機密性の高いメールを送りたい—