เมื่อต้องส่งอีเมลจำนวนมากให้กลุ่มคนใหญ่ คุณต้องการกระบวนการอัตโนมัติที่จัดการงานซ้ำได้เร็ว การสร้างไฟล์ Excel พร้อมรายชื่ออีเมลเป็นวิธีที่พบบ่อยที่สุด ดังนั้นในบทช่วยสอนนี้ เราจะแสดงวิธีส่งอีเมลจาก รายชื่อ Excel แบบอัตโนมัติให้จำนวนคนมาก
2 แนวทางสำหรับการส่งอีเมลจากรายชื่อ Excel
เรามีชุดข้อมูลตัวอย่างประกอบด้วยชื่อ, อีเมล, และหมายเลขลงทะเบียน ต้องส่งอีเมลให้แต่ละคนจาก รายชื่อ Excel โดยใช้ Mail Merge ของ Microsoft Word และ รหัส VBA เพื่อส่งอีเมลให้ผู้รับที่เลือกจากรายชื่อเดิม
1. ใช้ฟังก์ชัน Mail Merge ส่งอีเมลหลายฉบับจากรายชื่อ Excel
⇒ ขั้นตอนที่ 1: เปิดไฟล์ Word ใหม่
- เปิดเอกสาร Word ว่างเปล่า
- คลิกแท็บ Mailings
- จาก Select Recipients เลือก Use an Existing List
⇒ ขั้นตอนที่ 2: เชื่อมโยงรายชื่อ Excel เข้ากับไฟล์ Word
- เลือกไฟล์ Excel ที่มีรายชื่อ >> Open
- เลือกหมายเลขชีทที่มีรายชื่อ >> OK
⇒ ขั้นตอนที่ 3: ใส่ฟิลด์ (Insert Fields)
- จาก Mailings คลิก Insert Merge Field เพื่อใส่ฟิลด์ที่ต้องการ
- ใส่ฟิลด์ Name ก่อน ตำแหน่งที่ต้องการในจดหมายทั่วไป
- ใส่ฟิลด์ Reg (หมายเลขลงทะเบียน) ตำแหน่งที่ต้องการ
⇒ ขั้นตอนที่ 4: ตรวจสอบตัวอย่างผลลัพธ์ (Preview Results)
- คลิก Preview Results เพื่อดูตัวอย่างก่อนส่ง
⇒ ขั้นตอนที่ 5: Merge อีเมลและส่ง
- คลิก Finish & Merge >> Send Email Messages
- ในกล่อง To เลือก Email
- พิมพ์ Subject line (หัวข้ออีเมล)
- รูปแบบอีเมลจะเป็น HTML โดยค่าเริ่มต้น
- ใน Send Records เลือก All
- คลิก OK เพื่อส่งอีเมลให้ผู้รับหลายคนพร้อมกัน
อีเมลทั้งหมดจะถูกส่งผ่าน Outlook ที่เชื่อมโยงอยู่ ตรวจสอบใน Sent Items ของ Outlook เพื่อยืนยัน
หมายเหตุ: Microsoft Outlook ต้องเป็นแอปพลิเคชันอีเมลเริ่มต้น หากใช้แอปอื่น จะไม่สามารถส่งอีเมลด้วยวิธีนี้ได้2. รันรหัส VBA เพื่อส่งอีเมลจากช่วงที่เลือก (Selection of a Range)
ด้วย VBA คุณสามารถสร้างโปรแกรมส่งอีเมลจาก รายชื่อ Excel โดยเลือกช่วงข้อมูลที่ต้องการได้
⇒ ขั้นตอนที่ 1: สร้าง Module
- กด Alt + F11 เพื่อเปิด VBA Editor
- แท็บ Insert >> Module
⇒ ขั้นตอนที่ 2: วางรหัส VBA
- ใน Module ใหม่ ให้วางรหัส 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 เพื่อรัน
- Select ช่วงข้อมูลในกล่อง Input Box
- คลิก OK เพื่อส่งอีเมล
จะมีหน้าต่างตัวอย่างอีเมลขึ้นมา กดส่งแต่ละฉบับ แล้วตรวจสอบใน Sent Items ของ Outlook
สรุป
หวังว่าบทความนี้จะให้คู่มือเกี่ยวกับการส่งอีเมลจำนวนมากจาก รายชื่อ Excel เรียนรู้และนำไปประยุกต์กับข้อมูลของคุณ ดาวน์โหลดสมุดงานฝึกปฏิบัติและลองทำดู การสนับสนุนของคุณเป็นแรงจูงใจให้เราสร้างบทช่วยสอนแบบนี้ต่อไป
หากมีคำถาม สามารถติดต่อเราได้ หรือแสดงความคิดเห็นด้านล่าง ทีม ExcelDemy พร้อมตอบคำถามเสมอ
บทความที่เกี่ยวข้อง
- ส่งอีเมลอัตโนมัติจาก Excel ไป Outlook (4 วิธี)
- ส่งอีเมลจาก Excel พร้อม Body ด้วย Macro (ขั้นตอนง่าย)
- Excel Macro: ส่งอีเมลไปที่อยู่ในเซลล์ (2 วิธีง่าย)
- ส่งอีเมลอัตโนมัติจาก Excel ตามวันที่
- ส่งอีเมลหลายฉบับจากสเปรดชีต Excel (2 วิธีง่าย)
- Macro ส่งอีเมลจาก Excel พร้อม Body (3 กรณีที่มีประโยชน์)