ใช้ mail merge สร้างชุดเอกสารที่แต่ละผู้รับได้รับแบบรายบุคคล หากมองหาวิธี mail merge จาก Excel ไป Outlook พร้อมไฟล์แนบ มาถูกที่แล้ว มีหลายวิธี บทความนี้อภิปราย 2 ตัวอย่างที่เหมาะสม ให้ทำตามคู่มือครบถ้วน
2 ตัวอย่างที่เหมาะสมสำหรับ Mail Merge จาก Excel ไป Outlook พร้อมไฟล์แนบ
ใช้ 2 วิธีที่มีประสิทธิภาพและทรงเครื่องมือ ส่วนนี้ให้รายละเอียดครบถ้วน ใช้วิธีไหนก็ได้ เพราะยืดหยุ่นสูงในการปรับแต่ง ควรเรียนรู้และประยุกต์ทั้งหมด เพราะพัฒนาความคิดและความรู้ Excel ใช้ Microsoft Office 365 แต่ใช้เวอร์ชันอื่นได้
1. Mail Merge จาก Excel ไป Outlook พร้อมไฟล์แนบเดี่ยว
สาธิต mail merge จาก Excel ไป Outlook พร้อมไฟล์แนบเดี่ยว มารู้จักชุดข้อมูล Excel ก่อน เพื่อเข้าใจว่าเราพยายามทำอะไร มีชุดข้อมูลแสดง ชื่อคน, email id, และไฟล์ที่แต่ละคนต้องการ

ใช้ Visual Basic for Applications (VBA) mail merge จาก Excel ไป Outlook พร้อมไฟล์แนบเดี่ยว ต้องมี Developer tab แสดงบน Ribbon หลังจากนั้น ทำตามขั้นตอน
📌 ขั้นตอน:
- จาก Ribbon ไปแท็บ Developer
- เลือก Visual Basic จากกลุ่ม Code
- หรือกด Alt+F11 เปิด VBA editor

- ใน VBA window ไป Insert เลือก Module

- พิมพ์โค้ดต่อไปนี้
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 window กด Alt+F8
- กล่อง Macro เปิด เลือก Single_attachment ใน Macro name คลิก Run

- หน้าต่าง Outlook จะปรากฏ พร้อมไฟล์แนบที่ต้องการ

🔎 คำอธิบายโค้ด VBA
Sub Single_attachment()
ตั้งชื่อ sub-procedure ของ macro
Dim appOutlook As Object
Dim Email As Object
Dim source, mailto As String
ประกาศตัวแปรที่จำเป็น
Set appOutlook = CreateObject("Outlook.Application")
Set Email = appOutlook.CreateItem(olMailItem)
ใช้คำสั่ง Set สร้าง object ใหม่ appOutlook และ Email
mailto = mailto & Cells(2, 2) & ";"
ตัวแปรนี้เก็บผู้รับอีเมล
source = "F:\SOFTEKO\61-0055\New folder\" & Cells(2, 3)
ตัวแปรนี้เก็บ email id ของบุคคลจากโฟลเดอร์ที่ระบุ
ThisWorkbook.Save
คำสั่ง Save บันทึก workbook
source = ThisWorkbook.FullName
ตัวแปรนี้เก็บชื่อ workbook นี้
Email.attachments.Add source
เมธอด Add เพิ่ม source เข้า collection object
Email.To = mailto
Email.Subject = "Important Sheets"
Email.Body = "Greetings Everyone," & vbNewLine & "Please go through the Sheets." & vbNewLine & "Regards."
ตัวแปรคืนค่า "Important sheets" เป็น subject และ "Greetings Everyone, Please go through the sheets, regards" เป็น body
Email.Display
เมธอด Display แสดงอีเมล
End Sub
จบ sub-procedure ของ macro
หมายเหตุ:
ต้องบันทึกไฟล์ Excel และ docs ในโฟลเดอร์เดียวกัน มิฉะนั้นวิธีนี้จะไม่ทำงาน

อ่านเพิ่มเติม: Mail Merge ใน Excel โดยไม่ใช้ Word (2 วิธี)
2. Mail Merge จาก Excel ไป Outlook พร้อมไฟล์แนบหลายไฟล์
สาธิต mail merge จาก Excel ไป Outlook พร้อมไฟล์แนบหลายไฟล์ ชุดข้อมูลแสดง ชื่อบางคน, email id, และไฟล์ที่แต่ละคนต้องการ

ใช้ VBA mail merge จาก Excel ไป Outlook พร้อมไฟล์แนบหลายไฟล์ ต้องมี Developer tab บน Ribbon ทำตามขั้นตอน
📌 ขั้นตอน:
- จาก Ribbon ไป Developer tab
- เลือก Visual Basic จาก Code group
- หรือกด Alt+F11 เปิด VBA editor

- ใน VBA window ไป Insert เลือก Module

- พิมพ์โค้ดต่อไปนี้
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 window กด Alt+F8
- กล่อง Macro เปิด เลือก attachments ใน Macro name คลิก Run

- หน้าต่าง Outlook จะปรากฏ พร้อมไฟล์แนบที่ต้องการ

🔎 คำอธิบายโค้ด VBA
Sub attachments()
ตั้งชื่อ sub-procedure ของ macro
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 สร้าง object 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 Loop ตัวแปร mailto เก็บผู้รับ ตัวแปร source เก็บ email id จากโฟลเดอร์ที่ระบุ
Next
รันแต่ละรอบของ For Loop
ThisWorkbook.Save
คำสั่ง Save บันทึก workbook
source = ThisWorkbook.FullName
ตัวแปรเก็บชื่อ workbook นี้
Email.attachments.Add source
เมธอด Add เพิ่ม source เข้า collection
Email.To = mailto
Email.Subject = "Important Sheets"
Email.Body = "Greetings Everyone," & vbNewLine & "Please go through the Sheets." & vbNewLine & "Regards."
คืนค่า "Important sheets" เป็น subject และ "Greetings Everyone, Please go through the sheets, regards" เป็น body
Email.Display
เมธอด Display แสดงอีเมล
End Sub
จบ sub-procedure
หมายเหตุ:
ต้องบันทึกไฟล์ Excel และ docs ในโฟลเดอร์เดียวกัน มิฉะนั้นวิธีนี้ไม่ทำงาน

อ่านเพิ่มเติม: Macro to Populate a Mail Merge Document from Excel
สรุป
จบเซสชันวันนี้ เชื่อว่าแล้วคุณจะ mail merge จาก Excel ไป Outlook พร้อมไฟล์แนบได้ หากมีข้อสงสัยหรือข้อเสนอแนะ แชร์ในความคิดเห็นด้านล่าง
อย่าลืมเยี่ยมชม Exceldemy.com สำหรับปัญหาและโซลูชัน Excel ต่างๆ เรียนรู้วิธีใหม่ๆ และพัฒนาต่อไป!
บทความที่เกี่ยวข้อง
- วิธีรวมไฟล์ Excel เพื่อฉลากส่งจดหมาย (ขั้นตอนง่ายๆ)
- วิธี Mail Merge รูปภาพจาก Excel ไป Word (2 วิธีง่ายๆ)
- Mail Merge จาก Excel ไป Word Envelopes (2 วิธีง่ายๆ)
- วิธีเปลี่ยนรูปแบบวันที่ใน Excel Mail Merge (ขั้นตอนเร็ว)