ส่งอีเมลโดยอัตโนมัติ ช่วยให้เราสามารถออกแบบข้อความที่มีขนาดเดียวและส่งมอบให้กับผู้ใช้ได้ การสร้างและส่งอีเมลอัตโนมัติ เราอาจประหยัดเวลาได้ เนื่องจากช่วยให้คุณสามารถส่งอีเมลได้ในช่วงเวลาหนึ่ง ระบบอีเมลอัตโนมัติจึงเป็นแนวทางที่ยอดเยี่ยมในการมีส่วนร่วมกับผู้ที่มีแนวโน้มจะเป็นลูกค้า ความสามารถในการส่งการแจ้งเตือนทางอีเมลไปยังบุคคลที่ใช่ในเวลาที่เหมาะสมคือคุณลักษณะที่มีค่าที่สุดของระบบอัตโนมัติของอีเมล ในบทความนี้ เราจะสาธิต มาโคร VBA . ต่างๆ ของ excel ที่ส่งอีเมลโดยอัตโนมัติเมื่อตรงตามเงื่อนไข
คุณสามารถดาวน์โหลดเวิร์กบุ๊กและฝึกฝนกับพวกเขาได้
3 วิธีในการส่งอีเมลโดยอัตโนมัติเมื่อตรงตามเงื่อนไขใน Excel
เมื่อใดก็ตามที่เป็นไปตามเงื่อนไข เรามักจะต้องส่งอีเมลถึงลูกค้าของเรา การใช้ มาโคร VBA เราสามารถปรับแต่งฟังก์ชันการส่งจดหมายของเราได้ ด้วยเหตุนี้ เราอาจส่งอีเมลถึงผู้คนจำนวนมากพร้อมๆ กันโดยใช้ VBA เทคนิค. ในการส่งอีเมลโดยอัตโนมัติด้วยมาโคร เราต้องมี Outlook ติดตั้งไว้ล่วงหน้าบนคอมพิวเตอร์ของเรา ดังนั้นรหัสที่เราจะใส่จะส่งอีเมลไปยังผู้รับโดยใช้ Outlook .
1. มาโคร Excel VBA เพื่อส่งอีเมลโดยอัตโนมัติตามค่าของเซลล์
เราจะใช้ มาโคร VBA excel ของ excel เพื่อส่งอีเมลโดยอัตโนมัติตามค่าคอลัมน์ในชุดข้อมูลของเรา ชุดข้อมูลด้านล่างจะใช้เพื่อสาธิตตัวอย่างนี้ ถ้าค่าของเซลล์ในเซลล์ D5 มีขนาดใหญ่กว่า 10 เราจะพัฒนาฟังก์ชันที่ส่งอีเมลโดยอัตโนมัติ
สมมติว่า เรามีชุดข้อมูลต่อไปนี้ของรายละเอียดลูกค้าของซุปเปอร์ช็อป ชุดข้อมูลประกอบด้วยชื่อลูกค้าบางส่วนในคอลัมน์ B ที่อยู่อีเมลของพวกเขาในคอลัมน์ C และค่าธรรมเนียมบางส่วนสำหรับการซื้อผลิตภัณฑ์ในคอลัมน์ D . ตอนนี้ เราต้องการส่งอีเมลถึงพวกเขาเพื่อขอชำระเงินตามกำหนด แต่ที่นี่เรามีเงื่อนไขที่เราปฏิบัติตาม:หากบิลของลูกค้ามากกว่า 10 เท่านั้นจากนั้นเราจะส่งอีเมลถึงพวกเขา มาดูขั้นตอนการส่งอีเมลโดยอัตโนมัติตามค่าของเซลล์เมื่อตรงตามเงื่อนไข
ขั้นตอน:
- ขั้นแรก ไปที่ นักพัฒนา จากริบบิ้น
- ประการที่สอง จาก รหัส ให้คลิกที่ Visual Basic เพื่อเปิด ตัวแก้ไข Visual Basic . หรือกด Alt + F11 เพื่อเปิด ตัวแก้ไข Visual Basic .
- แทนที่จะทำเช่นนี้ คุณสามารถคลิกขวาที่เวิร์กชีตของคุณและไปที่ ดูโค้ด . ซึ่งจะนำคุณไปยัง Visual Basic Editor . ด้วย .
- สิ่งนี้จะปรากฏใน ตัวแก้ไข Visual Basic ที่เราเขียนโค้ดเพื่อสร้างตารางจากช่วง
- และคัดลอกและวาง 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
- หลังจากนั้น ให้รันโค้ดโดยคลิกที่ RubSub ปุ่มหรือกดแป้นพิมพ์ลัด F5 .
- จากนั้น มาโคร กล่องโต้ตอบจะปรากฏขึ้น คลิกที่ มาโคร . ทางขวา แล้วกด วิ่ง ปุ่ม.
- ตอนนี้ ถ้าคุณไปที่ 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
เราจะใช้ ซับส่วนตัว สำหรับสิ่งนี้. เพราะเราจะไม่ใช้ มาโคร หน้าต่างเพื่อเรียกใช้รหัสนี้ เมื่อค่าของเซลล์เปลี่ยนแปลง รหัสนี้จะดำเนินการโดยอัตโนมัติ เราใช้ ส่วนตัวย่อย ด้วย การเปลี่ยนแปลงเวิร์กชีต เหตุการณ์. จากนั้นลดจำนวนเซลล์ลงเหลือหนึ่งเซลล์ ซึ่งก็คือ D5 . หลังจากนั้นดูว่ามันมากกว่า 10 . สุดท้าย หากเป็นไปตามเงื่อนไข 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
ที่นี่ เราใช้ Send_Email_Automatically1 ขั้นตอนย่อย . จากนั้นเราประกาศประเภทตัวแปร เราใช้ Outlook เป็นไคลเอนต์อีเมลของเรา จากนั้น เราป้อนเนื้อหาอีเมลลงในรหัสของเรา str กำลังแสดงเนื้อหาอีเมล จากนั้นเราต้องการส่งอีเมลไปยังค่าของเซลล์ C5 ที่ซึ่งอีเมลของลูกค้าถูกจัดเก็บไว้ เราใส่หัวเรื่องไว้ที่ '.Subject ’ ต่อจากนั้น 'ส่ง ’ ใช้เพื่อส่งอีเมลของเรา
อ่านเพิ่มเติม: ส่งอีเมลจาก Excel โดยอัตโนมัติตามเนื้อหาของเซลล์ (2 วิธี)
2. ส่งอีเมลโดยอัตโนมัติตามวันครบกำหนดโดยใช้รหัส VBA
ในวิธีนี้ เราจะใช้มาโคร Excel VBA เพื่อส่งอีเมลโดยอัตโนมัติเมื่อใกล้ถึงวันครบกำหนดของใบเรียกเก็บเงิน สิ่งนี้ทำหน้าที่เป็นเครื่องเตือนใจ เพื่อแสดงสิ่งนี้ เราจะใช้ชุดข้อมูลด้านล่าง และชุดข้อมูลมีชื่อลูกค้าบางส่วนในคอลัมน์ B ที่อยู่อีเมลของพวกเขาในคอลัมน์ C , ข้อความที่เราต้องการส่งในคอลัมน์ D และวันครบกำหนดชำระในคอลัมน์ E . มาดูขั้นตอนการส่งอีเมลอัตโนมัติโดยขึ้นอยู่กับวันที่ตรงตามเงื่อนไข
ขั้นตอน:
- ขั้นแรก ไปที่ พัฒนา แถบ r จากริบบิ้น
- ขั้นที่สอง คลิกที่ Visual Basic เพื่อเปิด ตัวแก้ไข Visual Basic .
- อีกวิธีในการเปิด ตัวแก้ไข Visual Basic คือเพียงแค่กด Alt + F11 .
- หรือ คลิกขวาที่ชีต จากนั้นเลือก ดูโค้ด .
- และจะเป็นการเปิดหน้าต่างพื้นฐานที่มองเห็นได้
- หลังจากนั้น ให้คัดลอกและวาง โค้ด 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 หรือคลิกที่ เรียกใช้ย่อย เพื่อเรียกใช้โค้ด
- ตอนนี้ เลือกช่วงคอลัมน์กำหนดเวลาแล้วคลิก ตกลง .
- ในทำนองเดียวกัน เลือกช่วงคอลัมน์อีเมลแล้วกด ตกลง เพื่อดำเนินการต่อ
- จากนั้น เลือกช่วงคอลัมน์ข้อความแล้วคลิก ตกลง .
- และก็เท่านั้น ขณะนี้ข้อความถูกส่งไปยังที่อยู่อีเมล คุณสามารถตรวจสอบ 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")
ที่นี่เราใช้ ส่วนตัวย่อย . อีกครั้ง , Send_Email_Automatically2 เป็นชื่อ Sub . ของเรา . ขั้นตอน . เราประกาศชนิดของตัวแปร จากนั้น เราใช้ 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 ฟังก์ชันเพื่อดูว่าวันที่อยู่ภายในเจ็ดวันนับจากวันที่ปัจจุบันหรือไม่ จากนั้นในรหัสของเรา ให้ตั้งค่าเนื้อหาอีเมล สุดท้ายเราใช้ '.Send ’ เพื่อส่งอีเมลของเรา
อ่านเพิ่มเติม: วิธีการส่งอีเมลอัตโนมัติจาก Excel ตามวันที่
การอ่านที่คล้ายกัน
- วิธีดูว่าใครอยู่ในไฟล์ Excel ที่แชร์ (ด้วยขั้นตอนด่วน)
- วิธีเปิดใช้งานการแชร์เวิร์กบุ๊กใน Excel
- ส่งอีเมลเตือนความจำโดยอัตโนมัติจากแผ่นงาน Excel โดยใช้ VBA
- วิธีการส่งอีเมลจำนวนมากจาก Outlook โดยใช้ Excel (3 วิธี)
- วิธีการใช้มาโครเพื่อส่งอีเมลจาก Excel พร้อมไฟล์แนบ
3. ส่งอีเมลโดยอัตโนมัติด้วย Excel VBA เมื่อตรงตามเงื่อนไขหลายข้อ
ในวิธีนี้ เราจะใช้ VBA . อีกครั้ง มาโคร เพื่อส่งอีเมล แต่ในเวลานี้เมื่อหลายเงื่อนไขจะเป็นไปตามเท่านั้นข้อความจะถูกส่งไปยังลูกค้า มาดูขั้นตอนการส่งอีเมลโดยอัตโนมัติกัน
ขั้นตอน:
- ในการเริ่มต้น ให้คลิกที่นักพัฒนา บนริบบิ้น
- ขั้นที่สอง เปิดตัว Visual Basic Editor โดยคลิกที่ Visual Basic .
- หรือคุณอาจเข้าถึง ตัวแก้ไข Visual Basic โดยกด Alt + F11 .
- หรือ คลิกขวา บนแผ่นงานและเลือก ดูรหัส จากเมนู
- และหน้าต่างภาพพื้นฐานจะปรากฏขึ้น
- เขียนโค้ดที่นั่น
รหัส 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 เพื่อรันโค้ด
- A มาโคร กล่องโต้ตอบจะปรากฏขึ้นหลังจากนั้น หลังจากนั้น เลือก มาโคร . ที่เหมาะสม แล้วกดปุ่ม วิ่ง ปุ่ม.
- ในทำนองเดียวกัน ในวิธีการก่อนหน้านี้ หากคุณเปิด 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)
ที่นี่เราใช้สองขั้นตอนที่แตกต่างกัน ส่ง_Email_อัตโนมัติ3 เป็นชื่อของ ขั้นตอนย่อย . แรกของเรา . เรากำหนด 'หลายเงื่อนไข ’ เป็นชีตของเราและประกาศ ตัวแปร ชนิด จากนั้นเราจะค้นพบหมายเลขแถวสุดท้าย นอกจากนี้ เนื่องจากค่าของเราเริ่มต้นที่แถว 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 , ขั้นตอนย่อยครั้งที่สองของเรา . เราเลือก Outlook เป็นไคลเอนต์อีเมลของเรา จากนั้นในรหัสของเรา ให้ตั้งค่าเนื้อหาอีเมล การใช้ สิ่งที่แนบมา เรากำลังเพิ่มไฟล์ Excel ลงในอีเมล หลังจากนั้น เราใช้อีเมลของเราในการส่งด้วย '.Send ’.
อ่านเพิ่มเติม: วิธีการส่งอีเมลหากตรงตามเงื่อนไขใน Excel (วิธีง่ายๆ 3 วิธี)
บทสรุป
วิธีการข้างต้นจะช่วยให้คุณ ส่งอีเมลโดยอัตโนมัติเมื่อตรงตามเงื่อนไขใน Excel . หวังว่านี่จะช่วยคุณได้! หากคุณมีคำถามข้อเสนอแนะหรือข้อเสนอแนะโปรดแจ้งให้เราทราบในส่วนความคิดเห็น หรือดูบทความอื่นๆ ของเราได้ใน ExcelDemy.com บล็อก!
บทความที่เกี่ยวข้อง
- วิธีการส่งอีเมลอัตโนมัติจาก Excel ไปยัง Outlook (4 วิธี)
- วิธีการส่งอีเมลจาก Excel ด้วยเนื้อความโดยใช้มาโคร (ด้วยขั้นตอนง่ายๆ)
- มาโคร Excel:ส่งอีเมลไปยังที่อยู่ในเซลล์ (2 วิธีง่ายๆ)
- วิธีการส่งอีเมลหลายฉบับจากสเปรดชีต Excel (2 วิธีง่ายๆ)
- มาโครเพื่อส่งอีเมลจาก Excel พร้อมเนื้อหา (3 กรณีที่เป็นประโยชน์)
- วิธีส่งสเปรดชีต Excel ที่แก้ไขได้ทางอีเมล (วิธีด่วน 3 วิธี)