Thường xuyên người dùng có một hoặc hai thông tin thư từ khách hàng trong file Excel. Do đó, cần lấy thêm thông tin thư từ khớp với dữ liệu hiện có trong file đang làm việc. Trong những trường hợp đó, họ thử mail merge từ Excel sang Excel. VBA Macro Excel có thể thực hiện mail merge dễ dàng.
Giả sử người dùng đang làm trên Workbook Excel chỉ có một thông tin thư từ (ví dụ Địa chỉ Email). Người dùng có file khác chứa toàn bộ thông tin thư từ cần thiết cho các mục trong Workbook đang làm.

Bài viết trình bày VBA Macro mail merge từ Excel sang Excel.
Tải Workbook Excel
Workbook dữ liệu thư không đầy đủ
Workbook dữ liệu thư hiện có
VBA Macro Mail Merge từ Excel sang Excel
Như đã nói, phải lấy thông tin thư từ khớp của các mục hiện có từ workbook khác. Thông thường, gộp file đơn giản làm được. Nhưng rồi phải tìm từng địa chỉ mail sắp gửi. Vậy gộp 2 Workbook Excel sẽ vô nghĩa. Xem phần dưới để hiểu rõ tình huống và cách xử lý.
Dữ liệu thư hiện có trong Workbook Excel
Giả sử thông tin thư hiện có trong Workbook Excel trông như hình dưới. Dữ liệu có thể hàng trăm hàng, chục cột. Để trình bày, lấy vài hàng, vài cột. Đặt tên workbook này Mail_Data với một sheet tên Mail Data.

Xem thêm: Cách Mail Merge từ Excel sang Outlook với file đính kèm (2 ví dụ)
Dữ liệu thư cần thiết trong Workbook khác
Bây giờ có Workbook Excel khác chỉ có 4 hoặc 5 địa chỉ email. Muốn merge dữ liệu với workbook trước để tự động điền đầy đủ các ô trống cần thiết.

Xem thêm: Cách Mail Merge từ Excel sang Outlook (Các bước dễ dàng)
VBA Macro Mail Merge từ Excel sang Excel
Vì muốn merge workbook đang làm với workbook hiện có, dùng VBA Macro code.
Bước 1: Dùng ALT+F11 hoặc tab Developer > Visual Basic mở cửa sổ Microsoft Visual Basic. Trong cửa sổ, Click Insert > Module chèn Module.

Bước 2: Dán macro sau vào Module.
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

➤ Từ hình trên, các phần số đánh dấu:
1 – Bắt đầu macro khai báo tên Sub của VBA Macro Code.
2 – Gán đường dẫn workbook hiện có trên thiết bị. Cung cấp tên biến và số cột.
3 – Mở workbook hiện có dùng lệnh Workbooks.Open.
4 – Gán phạm vi cho các workbook và sheet khác nhau.
5 – Thực thi vòng lặp VBA FOR lồng nhau merge dữ liệu khi điều kiện thỏa mãn bởi câu lệnh VBA IF.
Bước 3: Sau khi chèn code, nhấn F5 hoặc click Run > Run Sub/UserForm chạy macro.

🔺 Ngay lập tức, Excel mở workbook Mail_Data đã đóng.

🔺 Quay về workbook Merge_Data xem thay đổi. Excel đã merge thông tin thư của các mục hiện có như mong muốn.

Xem thêm: Macro điền tài liệu Mail Merge từ Excel
Kết luận
Bài viết trình bày VBA Macro Code mail merge từ Excel sang Excel. Hy vọng phương pháp làm được việc bạn cần. Bình luận nếu có thắc mắc hoặc đóng góp.
Bài viết liên quan
- Macro điền tài liệu Mail Merge từ Excel
- Cách đổi định dạng ngày trong Excel Mail Merge (Các bước nhanh)
- Cách gộp file Excel vào nhãn thư từ (Các bước dễ dàng)
- Mail Merge từ Excel sang phong bì Word (2 phương pháp dễ dàng)
- Cách Mail Merge hình ảnh từ Excel sang Word (2 cách dễ dàng)
.