ExcelからOutlookへ添付ファイル付きで差し込み印刷(メールマージ)する方法|VBA活用の2つの実例
差し込み印刷(メールマージ)を活用すれば、受信者ごとに個別化されたドキュメントをまとめて作成できます。ExcelからOutlookへ添付ファイル付きで差し込み印刷するテクニックをお探しなら、この記事がまさにうってつけです。本記事では、すぐに使える2つの具体例を挙げながら、手順を丁寧に解説していきます。最後まで読んで、ぜひマスターしてください。
添付ファイル付きでExcelからOutlookへ差し込み印刷する2つの方法
ここでは、ExcelからOutlookへ添付ファイル付きで差し込み印刷するための、効果的かつ実用的な2つの方法を紹介します。どちらの方法もカスタマイズ性が高く、用途に合わせて柔軟に調整できます。両方を習得しておけば、VBAやExcel全体への理解も一段と深まるでしょう。なお、本記事ではMicrosoft Office 365を使用していますが、お使いのバージョンでも同様の手順で実行可能です。
1. 単一の添付ファイルで差し込み印刷する方法
まずは、添付ファイルを1つ追加してExcelからOutlookへ差し込み印刷する方法を解説します。はじめに、使用するExcelデータセットをご確認ください。ここには、氏名・メールアドレス・必要なファイル名が記録されています。

この操作には、VBA(Visual Basic for Applications)を使用します。事前にリボンへ「開発」タブを表示しておく必要があるので、準備ができたら以下の手順に沿って進めてください。
📌 手順:
- まず、リボンの「開発」タブをクリックします。
- 次に、「コード」グループ内の「Visual Basic」を選択します。
- または、Alt+F11キーを押してVBAエディターを直接開いても構いません。

- VBAウィンドウのメニューから「挿入」→「標準モジュール」を選択します。

- 続いて、以下のコードを入力します。
Sub Single_attachment()
Dim appOutlook As Object
Dim Email As Object
Dim source, mailto As String
Set appOutlook = CreateObject("Outlook.Application")
Set Email = appOutlook.CreateItem(olMailItem)
mailto = mailto & Cells(2, 2) & ";"
source = "F:\SOFTEKO\61-0055\New folder\" & Cells(2, 3)
Email.attachments.Add source
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
- コード入力後、Visual Basicウィンドウを閉じてAlt+F8キーを押します。
- 「マクロ」ダイアログボックスが開いたら、マクロ名の一覧から「Single_attachment」を選択し、「実行」をクリックします。

- するとOutlookのウィンドウが立ち上がり、指定したファイルが添付された状態のメールが表示されます。

🔎 VBAコードの解説
Sub Single_attachment()
まず、マクロのサブプロシージャに名前を付けて宣言します。
Dim appOutlook As Object
Dim Email As Object
Dim source, mailto As String
次に、マクロ内で使用する変数を宣言します。
Set appOutlook = CreateObject("Outlook.Application")
Set Email = appOutlook.CreateItem(olMailItem)
ここでは、Setキーワードを使ってappOutlook(Outlookアプリケーション)とEmail(メールアイテム)という2つのオブジェクトを新規作成しています。
mailto = mailto & Cells(2, 2) & ";"
この変数には、メールの宛先となる相手のアドレスが格納されます。
source = "F:\SOFTEKO\61-0055\New folder\" & Cells(2, 3)
この変数には、指定フォルダ内にある添付ファイルのパスが格納されます。
ThisWorkbook.Save
このコマンドにより、現在のワークブックが保存されます。
source = ThisWorkbook.FullName
この変数には、現在のワークブックのフルパス(ファイル名を含む)が格納されます。
Email.attachments.Add source
Addメソッドによって、コレクションオブジェクトへ添付ファイル(ソース)が追加されます。
Email.To = mailto
Email.Subject = "Important Sheets"
Email.Body = "Greetings Everyone," & vbNewLine & "Please go through the Sheets." & vbNewLine & "Regards."
ここで、件名に「Important Sheets」、本文に挨拶文と案内文がそれぞれ設定されます。
Email.Display
Displayメソッドにより、作成したメールが画面上に表示されます。
End Sub
最後に、サブプロシージャを終了してマクロが完了します。
⚠️ 注意点:
Excelファイルと添付するファイルは、必ず同じフォルダ内に保存してください。別々の場所に保存すると、この方法は正しく動作しません。

2. 複数の添付ファイルで差し込み印刷する方法
続いて、複数の添付ファイルを追加してExcelからOutlookへ差し込み印刷する方法を紹介します。こちらのデータセットにも、複数人の氏名・メールアドレス・必要なファイル名が記録されています。

複数の添付ファイルを扱う場合も、VBA(Visual Basic for Applications)を利用します。「開発」タブをリボンに表示させたら、以下の手順に従ってください。
📌 手順:
- まず、リボンの「開発」タブをクリックします。
- 次に、「コード」グループ内の「Visual Basic」を選択します。
- または、Alt+F11キーを押してVBAエディターを直接開いても構いません。

- 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 = "F:\SOFTEKO\61-0055\New folder\" & 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
- コード入力後、Visual Basicウィンドウを閉じてAlt+F8キーを押します。
- 「マクロ」ダイアログボックスが開いたら、マクロ名の一覧から「attachments」を選択し、「実行」をクリックします。

- するとOutlookのウィンドウが立ち上がり、複数のファイルが添付された状態のメールが表示されます。

🔎 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)
ここでも、Setキーワードを使ってappOutlookとEmailという新しいオブジェクトを作成しています。
For i = 2 To 5
mailto = mailto & Cells(i, 2) & ";"
Next i
For j = 2 To 5
source = "F:\SOFTEKO\61-0055\New folder\" & Cells(j, 3)
その後、Forループが開始されます。mailto変数には各行の宛先アドレスが順に追加され、source変数には指定フォルダ内の各添付ファイルのパスが格納されていきます。
Next
Nextステートメントにより、Forループの各反復処理が実行されます。
ThisWorkbook.Save
このコマンドにより、現在のワークブックが保存されます。
source = ThisWorkbook.FullName
この変数には、現在のワークブックのフルパス(ファイル名を含む)が格納されます。
Email.attachments.Add source
Addメソッドによって、コレクションオブジェクトへ添付ファイル(ソース)が追加されます。
Email.To = mailto
Email.Subject = "Important Sheets"
Email.Body = "Greetings Everyone," & vbNewLine & "Please go through the Sheets." & vbNewLine & "Regards."
ここで、件名に「Important Sheets」、本文に挨拶文と案内文がそれぞれ設定されます。
Email.Display
Displayメソッドにより、作成したメールが画面上に表示されます。
End Sub
最後に、サブプロシージャを終了してマクロが完了します。
⚠️ 注意点:
Excelファイルと添付するファイル群は、必ず同じフォルダ内に保存してください。別々の場所に保存すると、この方法は正しく動作しません。

まとめ
今回は以上です。この記事の手順を実践すれば、ExcelからOutlookへ添付ファイル付きで差し込み印刷できるようになるはずです。ご質問や改善のご提案があれば、下のコメント欄でお気軽にお知らせください。
Excelに関するさまざまな問題とその解決策については、Exceldemy.comもぜひチェックしてみてください。新しい手法を学び続けて、スキルアップを目指しましょう!
関連記事
- Excelファイルを宛名ラベルに差し込み印刷する方法(簡単な手順)
- ExcelからWordへ画像を差し込み印刷する方法(2つの簡単な方法)
- ExcelからWordの封筒へ差し込み印刷する方法(2つの簡単な方法)
- Excelの差し込み印刷で日付の表示形式を変更する方法(クイック手順)
-
Excel から Word に画像を差し込み印刷する方法 (2 つの簡単な方法)
差し込み印刷 オフィススーツの非常に便利な機能です。この機能を使用すると、ユーザーは何百ものドキュメント ファイルを一度に自動入力できます。画像も含まれます。差し込み印刷でドキュメントを自動入力する方法を知りたい場合は、この記事が役に立つかもしれません。この記事では、詳しく説明しながら、Excel から Word に写真を差し込み印刷する方法を紹介します。 この練習用ワークブックとワード ファイルを以下からダウンロードしてください。 Excel から Word に写真を差し込み印刷する 2 つの簡単な方法 デモンストレーションの目的で、以下のデータセットを使用します。私たちは、世界で画期的
-
【解決済み】Wordの差し込み印刷がExcelデータで機能しない原因と4つの対処法
Excelファイルから宛先データを読み込むWordの差し込み印刷(Mail Merge)は、カスタマイズしたレター、宛名ラベル、一括メールなどを効率的に作成できる便利な機能です。しかし、環境によっては「Excelデータを使った差し込み印刷がうまく動作しない」という問題に直面することがあります。 本記事では、この問題の主な原因と、具体的な解決方法をわかりやすく解説します。 Wordの差し込み印刷がExcelで機能しない主な原因 Microsoft Wordは、Excelファイルからデータを取得する際、既定でOLE DBデータベースファイルによる変換を使用します。差し込み印刷が正常に動作しない典