การส่งอีเมลอัตโนมัติ ช่วยให้เราออกแบบข้อความที่เหมาะกับทุกคนและส่งมอบให้ผู้ใช้ได้ โดยการสร้างและส่งอีเมลอัตโนมัติ เราอาจประหยัดเวลาได้ เนื่องจากมันช่วยให้คุณส่งอีเมลในเวลาที่เฉพาะเจาะจง การทำให้อีเมลอัตโนมัติเป็นวิธีที่ดีในการมีส่วนร่วมกับลูกค้าที่เป็นไปได้ ความสามารถในการส่งการแจ้งเตือนอีเมลให้คนที่เหมาะสมในเวลาที่เหมาะสมคือคุณสมบัติที่มีค่าที่สุดของการทำให้อีเมลอัตโนมัติ ในบทความนี้ เราจะสาธิต VBA Macros ต่างๆ ของ Excel ที่ส่งอีเมลอัตโนมัติเมื่อเงื่อนไขเป็นจริง
คุณสามารถดาวน์โหลดสมุดงานและฝึกฝนกับมันได้
3 วิธี ส่งอีเมลอัตโนมัติเมื่อเงื่อนไขเป็นจริงใน Excel
ทุกครั้งที่เงื่อนไขเป็นจริง เรามักต้องส่งอีเมลให้ลูกค้าของเรา โดยใช้ VBA macros เราสามารถปรับแต่งฟังก์ชันการส่งจดหมายของเราได้ ผลสำคัญคือ เราอาจส่งอีเมลให้หลายคนพร้อมกันโดยใช้เทคนิค VBA เพื่อส่งอีเมลอัตโนมัติด้วยแมโคร เราต้องมี Outlook ติดตั้งไว้บนคอมพิวเตอร์ของเราก่อน ดังนั้น โค้ดที่เราจะใส่จะส่งอีเมลให้ผู้รับโดยใช้ Outlook
1. Excel VBA Macro สำหรับส่งอีเมลอัตโนมัติตามค่าเซลล์
เราจะใช้ VBA macro ของ Excel เพื่อส่งอีเมลอัตโนมัติตามค่าคอลัมน์บางคอลัมน์ในชุดข้อมูลของเรา ชุดข้อมูลด้านล่างจะใช้สาธิตตัวอย่างนี้ หากค่าเซลล์ในเซลล์ D5 มากกว่า 10 เราจะพัฒนาฟังก์ชันที่ส่งอีเมลอัตโนมัติ
สมมติว่า เรามีชุดข้อมูลรายละเอียดลูกค้าบางส่วนของซูเปอร์มาร์เก็ต ชุดข้อมูลมีชื่อลูกค้าบางส่วนในคอลัมน์ B ที่อยู่อีเมลของพวกเขาในคอลัมน์ C และค่าค้างชำระสำหรับสินค้าที่ซื้อในคอลัมน์ D ตอนนี้ เราต้องการส่งอีเมลให้พวกเขาขอชำระค่าค้าง แต่ที่นี่เรามีเงื่อนไขที่เราต้องปฏิบัติ: หากค่าใช้จ่ายของลูกค้ามากกว่า 10 เท่านั้นเราจะส่งอีเมลให้พวกเขา ดังนั้น ให้ดูขั้นตอนในการส่งอีเมลอัตโนมัติตามค่าเซลล์เมื่อเงื่อนไขเป็นจริง

ขั้นตอน:
- ขั้นแรก ไปที่แท็บ Developer (นักพัฒนา) จากริบบอน
- ขั้นที่สอง จากหมวดหมู่ Code (โค้ด) คลิกที่ Visual Basic เพื่อเปิด Visual Basic Editor หรือกด Alt + F11 เพื่อเปิด Visual Basic Editor

- แทนที่จะทำเช่นนั้น คุณสามารถคลิกขวาบนแผ่นงานของคุณและไปที่ View Code (ดูโค้ด) ซึ่งก็จะพาคุณไปที่ Visual Basic Editor เช่นกัน

- สิ่งนี้จะปรากฏใน Visual Basic Editor ที่เราเขียนโค้ดเพื่อสร้างตารางจากช่วง
- และ คัดลอกและวางโค้ด VBA ที่แสดงด้านล่าง
รหัส VBA:
Dim r As Range Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Cells.Count > 1 Then Exit Sub Set r = Intersect(Range("D5"), Target) If r Is Nothing Then Exit Sub If IsNumeric(Target.Value) And Target.Value > 10 Then Call Send_Mail_Automatically1 End If End Sub Sub Send_Mail_Automatically1() Dim ob1 As Object Dim ob2 As Object Dim str As String Set ob1 = CreateObject("Outlook.Application") Set ob2 = ob1.CreateItem(0) str = "Hello!" & vbNewLine & vbNewLine & "To prevent further costs," _ & vbNewLine & "please pay before the deadline." On Error Resume Next With ob2 .To = Range("C5").Value .cc = "" .BCC = "" .Subject = "Request to Pay Bill" .Body = str .Send End With On Error GoTo 0 Set ob2 = Nothing Set ob1 = Nothing End Sub
- หลังจากนั้น รันโค้ดโดยคลิกที่ปุ่ม RunSub หรือกดปุ่มลัด F5

- จากนั้น กล่องโต้ตอบ Macros จะแสดง คลิกที่ Macros ที่ถูกต้อง แล้ว กดปุ่ม Run

- ตอนนี้ หากคุณไปที่แอปพลิเคชัน Outlook ของคุณและตรวจสอบกล่องจดหมายเข้า เราจะพบจดหมายที่คุณเพิ่งส่งผ่าน VBA Macro จาก Excel

คำอธิบายโค้ด VBA
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Cells.Count > 1 Then Exit Su Set r = Intersect(Range("D5"), Target) If r Is Nothing Then Exit Sub If IsNumeric(Target.Value) And Target.Value > 10 Then Call Send_Mail_Automatically1 End If End Sub
เราจะใช้ Private Sub สำหรับเรื่องนี้ เพราะเราจะไม่ใช้หน้าต่าง Macro เพื่อรันโค้ดนี้ เมื่อค่าเซลล์เปลี่ยนแปลง โค้ดนี้จะทำงานอัตโนมัติ เราใช้ Private Sub กับเหตุการณ์ Worksheet Change (การเปลี่ยนแปลงแผ่นงาน) จากนั้น จำกัดจำนวนเซลล์ให้เหลือหนึ่งเซลล์ ซึ่งคือ D5 หลังจากนั้น ตรวจสอบว่ามันมากกว่า 10 หรือไม่ สุดท้าย หากเงื่อนไขเป็นจริง Sub Procedure (กระบวนย่อย) Send_Email_Automatically1 จะทำงาน
Sub Send_Mail_Automatically1() Dim ob1 As Object Dim ob2 As Object Dim str As String Set ob1 = CreateObject("Outlook.Application") Set ob2 = ob1.CreateItem(0) str = "Hello!" & vbNewLine & vbNewLine & "To prevent further costs," & vbNewLine & "please pay before the deadline." On Error Resume Next With ob2 .To = Range("C5").Value .cc = "" .BCC = "" .Subject = "Request to Pay Bill" .Body = str .Send
ที่นี่ เราใช้ Sub Procedure Send_Email_Automatically1 จากนั้น เราประกาศประเภทตัวแปร เราใช้ Outlook เป็นไคลเอนต์อีเมลของเรา จากนั้น เราใส่เนื้อหาอีเมลในโค้ดของเรา str แสดงเนื้อหาอีเมล และเราต้องการส่งอีเมลไปยังค่าเซลล์ C5 ที่จัดเก็บอีเมลลูกค้าของเรา เราใส่เรื่องบน '.Subject' ตามด้วย '.Send' ถูกใช้เพื่อส่งอีเมลของเรา
อ่านเพิ่มเติม: ส่งอีเมลจาก Excel อัตโนมัติตามเนื้อหาเซลล์ (2 วิธี)
2. ส่งอีเมลอัตโนมัติตามวันครบกำหนดโดยใช้โค้ด VBA
ในวิธีนี้ เราจะใช้ Excel VBA macro เพื่อส่งอีเมลอัตโนมัติเมื่อวันครบกำหนดของบิลใกล้เข้ามา นี่เป็นการเตือนประเภทหนึ่ง เพื่อสาธิต เราจะใช้ชุดข้อมูลด้านล่าง และชุดข้อมูลมีชื่อลูกค้าบางส่วนในคอลัมน์ B ที่อยู่อีเมลของพวกเขาในคอลัมน์ C ข้อความที่เราต้องการส่งในคอลัมน์ D และวันครบกำหนดของการชำระเงินค้างในคอลัมน์ E ดังนั้น ให้ดูขั้นตอนสำหรับการส่งอีเมลอัตโนมัติตามวันที่เมื่อเงื่อนไขเป็นจริง

ขั้นตอน:
- ขั้นแรก ไปที่แท็บ Developer จากริบบอน
- ขั้นที่สอง คลิกที่ Visual Basic เพื่อเปิด Visual Basic Editor
- อีกวิธีหนึ่งในการเปิด Visual Basic Editor คือการกด Alt + F11 เพียงอย่างเดียว
- หรือ คลิกขวาบนแผ่นงาน แล้วเลือก View Code
- และสิ่งนี้จะเปิดหน้าต่าง visual basic ขึ้นมา
- หลังจากนั้น คัดลอกและวาง โค้ด VBA ด้านล่าง
รหัส VBA:
Public Sub Send_Email_Automatically2() Dim rngD, rngS, rngT As Range Dim ob1, ob2 As Object Dim LRow, x As Long Dim l, strbody, rSendValue, mSub As String On Error Resume Next Set rngD = Application.InputBox("Deadline Range:", "Exceldemy", , , , , , 8) If rngD Is Nothing Then Exit Sub Set rngS = Application.InputBox("Email Range:", "Exceldemy", , , , , , 8) If rngS Is Nothing Then Exit Sub Set rngT = Application.InputBox("Email Topic Range:", "Exceldemy", , , , , , 8) If rngT Is Nothing Then Exit Sub LRow = rngD.Rows.Count Set rngD = rngD(1) Set rngS = rngS(1) Set rngT = rngT(1) Set ob1 = CreateObject("Outlook.Application") For x = 1 To LRow rngDValue = "" rngDValue = rngD.Offset(x - 1).Value If rngDValue <> "" Then If CDate(rngDValue) - Date <= 7 And CDate(rngDValue) - Date > 0 Then rngSValue = rngS.Offset(x - 1).Value mSub = rngT.Offset(x - 1).Value & " on " & rngDValue l = "<br><br>" strbody = "<HTML><BODY>" strbody = strbody & "Hello! " & rngSValue & l strbody = strbody & rngT.Offset(x - 1).Value & l strbody = strbody & "</BODY></HTML>" Set ob2 = ob1.CreateItem(0) With ob2 .Subject = mSub .To = rSendValue .HTMLBody = strbody .Send End With Set ob2 = Nothing End If End If Next Set ob1 = Nothing End Sub
- เพิ่มเติม กดปุ่ม F5 หรือคลิกที่ปุ่ม Run Sub เพื่อรันโค้ด

- ตอนนี้ เลือกช่วงคอลัมน์วันครบกำหนดและคลิก OK

- เช่นเดียวกัน เลือกช่วงคอลัมน์อีเมลและกด OK เพื่อดำเนินต่อ

- จากนั้น เลือกช่วงคอลัมน์ข้อความและคลิก OK

- และ นั่นคือสิ่งที่ทำเสร็จ ข้อความถูกส่งไปยังที่อยู่อีเมลแล้ว คุณสามารถตรวจสอบกล่องจดหมายเข้า Outlook ของคุณเพื่อยืนยันได้
คำอธิบายโค้ด VBA
Public Sub Send_Email_Automatically2() Dim rngD, rngS, rngT As Range Dim ob1, ob2 As Object Dim LRow, x As Long Dim l, strbody, rSendValue, mSub As String On Error Resume Next Set rngD = Application.InputBox("Deadline Range:", "Exceldemy", , , , , , 8) If rngD Is Nothing Then Exit Sub Set rngS = Application.InputBox("Email Range:", "Exceldemy", , , , , , 8) If rngS Is Nothing Then Exit Sub Set rngT = Application.InputBox("Email Topic Range:", "Exceldemy", , , , , , 8) If rngT Is Nothing Then Exit Sub LRow = rngD.Rows.Count Set rngD = rngD(1) Set rngS = rngS(1) Set rngT = rngT(1) Set ob1 = CreateObject("Outlook.Application")
ที่นี่ เราใช้ Private Sub อีกครั้ง Send_Email_Automatically2 เป็นชื่อของ Sub Procedure ของเรา เราประกาศประเภทตัวแปร จากนั้น เราใช้ InputBox เพื่อให้ช่วงค่า หลังจากนั้น เราเลือก Outlook เป็นไคลเอนต์จดหมายของเรา
For x = 1 To LRow rngDValue = "" rngDValue = rngD.Offset(x - 1).Value If rngDValue <> "" Then If CDate(rngDValue) - Date <= 7 And CDate(rngDValue) - Date > 0 Then rngSValue = rngS.Offset(x - 1).Value mSub = rngT.Offset(x - 1).Value & " on " & rngDValue l = "<br><br>" strbody = "<HTML><BODY>" strbody = strbody & "Hello! " & rngSValue & l strbody = strbody & rngT.Offset(x - 1).Value & l strbody = strbody & "</BODY></HTML>" Set ob2 = ob1.CreateItem(0) With ob2 .Subject = mSub .To = rSendValue .HTMLBody = strbody .Send
จากนั้น เราใช้ฟังก์ชัน VBA CDate เพื่อดูว่าวันที่อยู่ภายใน 7 วันจากวันที่ปัจจุบันหรือไม่ จากนั้น ในโค้ดของเรา ตั้งค่าเนื้อหาอีเมล สุดท้าย เราใช้ '.Send' เพื่อส่งอีเมลของเรา
อ่านเพิ่มเติม: วิธีส่งอีเมลจาก Excel อัตโนมัติตามวันที่
บทความที่เกี่ยวข้อง
- วิธีดูว่าใครอยู่ในไฟล์ Excel แบบแชร์ (พร้อมขั้นตอนเร็ว)
- วิธีเปิดใช้งาน Share Workbook ใน Excel
- ส่งอีเมลเตือนอัตโนมัติจากแผ่นงาน Excel โดยใช้ VBA
- วิธีส่งอีเมลจำนวนมากจาก Outlook โดยใช้ Excel (3 วิธี)
- วิธีใช้ Macro ส่งอีเมลจาก Excel พร้อมไฟล์แนบ
3. ส่งอีเมลอัตโนมัติด้วย Excel VBA เมื่อเงื่อนไขหลายอย่างเป็นจริง
ในวิธีนี้ อีกครั้ง เราจะใช้ VBA Macro เพื่อส่งอีเมล แต่ครั้งนี้ เมื่อเงื่อนไขหลายอย่างเป็นจริงเท่านั้น จึงจะส่งข้อความไปยังลูกค้า ดังนั้น ให้ดูกระบวนการสำหรับการส่งอีเมลอัตโนมัติ

ขั้นตอน:
- เพื่อเริ่มต้น คลิกแท็บ Developer บนริบบอน
- ขั้นที่สอง เปิด Visual Basic Editor โดยคลิกที่ Visual Basic
- ทางเลือกอื่น คุณสามารถเข้าถึง Visual Basic Editor โดยการกด Alt + F11
- หรือ คลิกขวา บนแผ่นงาน และเลือก View Code จากเมนู
- และหน้าต่าง visual basic จะปรากฏ
- เขียนโค้ดที่นั่น
รหัส VBA:
Sub Send_Email_Automatically3() Dim wrksht As Worksheet Dim add As String, mSub As String, N As String Dim eRow As Long, x As Long Set wrksht = ThisWorkbook.Sheets("Multiple Conditions") With wrksht eRow = .Cells(.Rows.Count, 5).End(xlUp).Row For x = 5 To eRow If .Cells(x, 4) >= 1 And .Cells(x, 5) = "Yes" Then add = .Cells(x, 3) mSub = "Request to Pay Bill" N = .Cells(x, 2) Call Multiple_Conditions(add, mSub, N) End If Next x End With End Sub Sub Multiple_Conditions(mAddress As String, mSubject As String, eName As String) Dim ob1 As Object Dim ob2 As Object Set ob1 = CreateObject("Outlook.Application") Set ob2 = ob1.CreateItem(0) With ob2 .To = add .CC = "" .BCC = "" .Subject = mSub .Body = "Hello!" & N & ", To prevent further costs, please pay before the deadline." .Attachments.add ActiveWorkbook.FullName .Send End With Set pMail = Nothing Set pApp = Nothing End Sub
- สุดท้าย กดปุ่ม F5 เพื่อรันโค้ด

- กล่องโต้ตอบ Macros จะปรากฏหลังจากนั้น หลังจากนั้น เลือก Macros ที่เหมาะสม และกดปุ่ม Run

- เช่นเดียวกับวิธีก่อนหน้า หากคุณเปิด Outlook และดูในกล่องจดหมายของคุณ คุณจะเห็นอีเมลที่คุณเพิ่งส่งผ่าน VBA Macro จาก Excel
คำอธิบายโค้ด VBA
Sub Send_Email_Automatically3() Dim wrksht As Worksheet Dim add As String, mSub As String, N As String Dim eRow As Long, x As Long Set wrksht = ThisWorkbook.Sheets("Multiple Conditions") With wrksht eRow = .Cells(.Rows.Count, 5).End(xlUp).Row For x = 5 To eRow If .Cells(x, 4) >= 1 And .Cells(x, 5) = "Yes" Then add = .Cells(x, 3) mSub = "Request to Pay Bill" N = .Cells(x, 2) Call Multiple_Conditions(add, mSub, N)
ที่นี่ เราใช้สองขั้นตอนที่แตกต่างกัน Send_Email_Automatically3 เป็นชื่อของ Sub Procedure แรกของเรา เราตั้ง 'Multiple Conditions' เป็นแผ่นงานของเรา และประกาศ ประเภทตัวแปร จากนั้น เราหาหมายเลขแถวสุดท้าย นอกจากนี้ เนื่องจากค่าของเราเริ่มที่แถว 5 เราจึงย้ายแถว 5 ไปจนถึงท้ายของโค้ดของเรา
Sub Multiple_Conditions(mAddress As String, mSubject As String, eName As String) Dim ob1 As Object Dim ob2 As Object Set ob1 = CreateObject("Outlook.Application") Set ob2 = ob1.CreateItem(0) With ob2 .To = add .CC = "" .BCC = "" .Subject = mSub .Body = "Hello!" & N & ", To prevent further costs, please pay before the deadline." .Attachments.add ActiveWorkbook.FullName .Send
จากนั้น เราเรียก Multiple_Conditions Sub Procedure ที่สองของเรา เราเลือก Outlook เป็นไคลเอนต์จดหมายของเรา จากนั้น ในโค้ดของเรา ตั้งค่าเนื้อหาอีเมล ใช้เทคนิค Attachment (ไฟล์แนบ) เรากำลังเพิ่มไฟล์ Excel เข้าไปในอีเมล ตามด้วย เราใช้ส่งอีเมลของเราด้วย '.Send'
อ่านเพิ่มเติม: วิธีส่งอีเมลหากเงื่อนไขเป็นจริงใน Excel (3 วิธีง่าย)
สรุป
วิธีการข้างต้นจะช่วยให้คุณ ส่งอีเมลอัตโนมัติเมื่อเงื่อนไขเป็นจริงใน Excel หวังว่าจะช่วยคุณได้ หากคุณมีคำถาม ข้อเสนอแนะ หรือข้อเสนอแนะ โปรดแจ้งให้เราทราบในส่วนความคิดเห็น หรือคุณสามารถดูบทความอื่นๆ ของเราในบล็อก ExcelDemy.com ได้
บทความที่เกี่ยวข้อง
- วิธีส่งอีเมลอัตโนมัติจาก Excel ไป Outlook (4 วิธี)
- วิธีส่งอีเมลจาก Excel พร้อมเนื้อหาโดยใช้ Macro (พร้อมขั้นตอนง่าย)
- Excel Macro: ส่งอีเมลไปยังที่อยู่ในเซลล์ (2 วิธีง่าย)
- วิธีส่งอีเมลจำนวนมากจากสเปรดชีต Excel (2 วิธีง่าย)
- Macro ส่งอีเมลจาก Excel พร้อมเนื้อหา (3 กรณีที่มีประโยชน์)
- วิธีส่งสเปรดชีต Excel ที่แก้ไขได้ผ่านอีเมล (3 วิธีเร็ว)