ExcelからExcelへの差し込み印刷をVBAマクロで実現する方法(簡単な手順)
Excelファイルには、顧客のメール送信先情報が1〜2件しか登録されていないことも少なくありません。そんなとき、開いているファイルの既存データに一致する残りの情報を、別のファイルから取得したくなります。こうしたニーズに応えるのが、ExcelからExcelへの差し込み印刷(メールマージ)です。ExcelのVBAマクロを活用すれば、この作業を簡単に自動化できます。
たとえば、あるユーザーが1つのワークブックで作業していて、そこには「メールアドレス」という1項目の情報しかないとします。そして、そのワークブックの各エントリに必要なその他の送信先情報がすべて揃った別のファイルも持っている、という状況を想定してみましょう。

本記事では、ExcelからExcelへ差し込み印刷を行うためのVBAマクロを具体的に解説します。
サンプルワークブックのダウンロード
送信先情報が不完全なワークブック
既存の送信先情報が入ったワークブック
ExcelからExcelへ差し込み印刷を行うVBAマクロ
前述のとおり、既存のエントリに一致する送信先情報を別のワークブックから取得する必要があります。通常なら単純にファイルを結合すれば済む話ですが、それではメールを送りたい相手の情報を一つひとつ探し出さなければなりません。つまり、2つのワークブックをただ結合するだけでは、せっかくの目的が台無しになってしまうのです。以下のセクションで、状況の詳細とその対処法を見ていきましょう。
既存ワークブック内のメールデータ
まず、Excelワークブックに保存されている既存の送信先情報が、下の画像のような状態であるとします。実際のデータは数百行・数十列に及ぶこともありますが、ここでは説明をわかりやすくするため、数行×数列のサンプルを使用します。このワークブックはMail_Dataという名前で、シート名は「Mail Data」です。

関連記事:添付ファイル付きでExcelからOutlookへ差し込み印刷する方法(2つの例)
別ワークブックにある必要なメールデータ
次に、メールアドレスが4〜5件だけ登録された別のExcelワークブックがあるとします。このデータを先ほどのワークブックと結合し、空白セルを自動的に埋めたいわけです。

関連記事:ExcelからOutlookへ差し込み印刷する方法(簡単な手順)
Excel間で差し込み印刷を行うVBAマクロ
それでは、アクティブなワークブックと既存のワークブックを結合するために、VBAマクロのコードを使用しましょう。
ステップ1: Alt + F11キーを押すか、「開発」タブ > 「Visual Basic」を選択して、Microsoft Visual Basicウィンドウを開きます。続けて「挿入」>「標準モジュール」をクリックし、モジュールを挿入します。

ステップ2: 以下のマクロをモジュールに貼り付けます。
Sub Mail_Merge_From_Excel_to_Excel()
Book1_Path = "C:\Users\maruf\Desktop\Softeko\Mail Merge from Excel to Excel\Mail_Data.xlsx"
Book1_Name = "Mail_Data"
Book2_Name = "Mail_Merge"
Sheet1_Name = "Mail Data"
Sheet2_Name = "Mail Merge"
No_of_Columns = 9
Workbooks.Open Book1_Path
Set Rng1 = Workbooks(Book1_Name).Worksheets(Sheet1_Name).UsedRange
Set Rng2 = Workbooks(Book2_Name).Worksheets(Sheet2_Name).UsedRange
For i = 1 To Rng2.Rows.Count
For j = 1 To Rng1.Rows.Count
If Rng1.Cells(j, No_of_Columns) = Rng2.Cells(i, No_of_Columns) Then
For k = 1 To No_of_Columns - 1
Rng2.Cells(i, k) = Rng1.Cells(j, k)
Next k
Exit For
End If
Next j
Next i
End Sub

➤ 上の画像における番号付きの部分は、それぞれ以下を意味しています。
1 – マクロコードの開始部分。VBAマクロのSubプロシージャ名を宣言します。
2 – デバイス上の既存ワークブックのパスを指定します。あわせて変数名や列番号も設定します。
3 – Workbooks.Openコマンドを使って、既存のワークブックを開きます。
4 – 各ワークブックとそのシートに対して、操作対象となる範囲を割り当てます。
5 – ネストされたVBAのFORループを実行し、VBAのIFステートメントによる条件が満たされた場合にデータを結合します。
ステップ3: コードを挿入したら、F5キーを押すか、「実行」>「Sub/ユーザーフォームの実行」をクリックしてマクロを実行します。

🔺 すると、閉じていたMail_Dataワークブックが即座に開きます。

🔺 次に、Merge_Dataワークブックに戻って変更を確認しましょう。意図どおり、既存エントリの送信先情報がExcelによって自動的に結合されているのがわかります。

関連記事:Excelから差し込み印刷ドキュメントを作成するマクロ
まとめ
本記事では、ExcelからExcelへ差し込み印刷を行うためのVBAマクロコードをご紹介しました。この方法が皆さんの日々の作業のお役に立てば幸いです。ご不明な点や追加したい情報などがあれば、ぜひコメントでお知らせください。
関連記事
- Excelから差し込み印刷ドキュメントを作成するマクロ
- Excelの差し込み印刷で日付形式を変更する方法(クイック手順)
- Excelファイルを宛名ラベルに差し込む方法(簡単な手順)
- ExcelからWordの封筒へ差し込み印刷する方法(2つの簡単な方法)
- ExcelからWordへ画像を差し込み印刷する方法(2つの簡単な方法)
-
【簡単3ステップ】Excelのピボットテーブルからデータモデルを削除する方法
Power Pivotは、複数のデータテーブルやテーブル間のリレーションシップを管理するための機能で、複数のテーブルにまたがるデータ分析を効率的に行うことができます。PowerPivotリボンから直接操作するか、ピボットテーブルを作成する際に、Excelのテーブルをデータモデルへ追加することが可能です。本記事では、Excelでピボットテーブルからデータモデルを削除する方法を、3つの簡単なステップと分かりやすい図解付きで解説していきます。Excelでピボットテーブルからデータモデルを削除する3つの手順ここでは、XYZグループの複数の営業担当者に関する情報を含むデータセットを使用します。営業担当者
-
ExcelでCSVファイルを複数のシートに結合する方法(初心者向けかんたん手順)
Excelで作業をしていると、複数のCSVファイルを同時に扱わなければならない場面によく出くわします。そうしたCSVファイルを1つのワークブックにまとめたいというニーズは非常に頻繁に発生します。この記事では、ExcelでCSVファイルを複数のシートに結合するための手順を、ステップごとにわかりやすく解説します。 サンプルのCSVファイルと、結合後の完成ワークブックはこちらから無料でダウンロードできます。 CSVソースファイル: 結合後の最終ファイル: CSVファイルを複数のExcelシートに結合する手順 ここでは例として、6年生・7年生・8年生それぞれの生徒の各教科の成績表が、3つ