บ่อยครั้ง เราต้อง ส่งอีเมล ให้กับลูกค้าของเราเมื่อมี เงื่อนไข ถูกเติมเต็ม บทความนี้จะแสดงให้คุณเห็น 3 วิธีการ ส่ง อีเมล ถ้า เงื่อนไข ได้ พบ ใน Excel . เพื่อสาธิตวิธีการของเรา เราได้เลือกชุดข้อมูลที่มี 3 คอลัมน์ :“ชื่อ ","อีเมล ” และ “การชำระเงิน ครบกำหนด ”.
3 วิธีในการส่งอีเมลหากตรงตามเงื่อนไขใน Excel
1. การใช้ VBA เพื่อส่งอีเมลหากค่าของเซลล์เปลี่ยนแปลงใน Excel
สำหรับวิธีแรก เราจะใช้ Excel VBA รหัสเพื่อ ส่ง อีเมล เมื่อ เงื่อนไข ตรงตาม . อันดับแรก เราจะนำ โมดูล VBA . ขึ้นมา หน้าต่าง จากนั้นเราจะพิมพ์รหัสของเราและดำเนินการเพื่อส่งอีเมล . นอกจากนี้ ในกรณีนี้ เกณฑ์การเรียกใช้โค้ดของเราจะเป็นเมื่อค่าของเซลล์เปลี่ยนแปลง
ขั้นตอน:
- ประการแรก คลิกขวา ในส่วน “การเปลี่ยนแปลงมูลค่าเซลล์ ” แผ่นงาน
- ประการที่สอง เลือก ดูโค้ด .
- ประการที่สาม พิมพ์รหัสนี้
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("D5"), Target) Is Nothing Then
If IsNumeric(Target.Value) And Target.Value > 700 Then
Call Send_Email_Condition_Cell_Value_Change
End If
End If
End Sub
รายละเอียดโค้ด VBA
ในที่นี้ เราจะใช้ Private Sub . เนื่องจากเราจะไม่รันโค้ดนี้ผ่าน มาโคร หน้าต่าง. รหัสนี้จะรันเองเมื่อมี เซลล์ ค่าการเปลี่ยนแปลง
- ประการแรก เราใช้ Private Sub โดยที่เหตุการณ์คือ Worksheet_Change .
- ประการที่สอง เรากำลังจำกัดจำนวน เซลล์ ถึง 1 และ เซลล์ . นั้น คือ D5 .
- ประการที่สาม เรากำลังตรวจสอบว่าเกิน 700 . หรือไม่ .
- สุดท้าย ถ้า เงื่อนไข เป็นไปตาม ขั้นตอนย่อย Send_Email_Condition_Cell_Value_Change จะดำเนินการ
- สุดท้าย บันทึก และปิดหน้าต่างนี้
ตอนนี้ เราจะพิมพ์รหัสลงใน โมดูล หน้าต่าง. เพื่อเรียก โมดูล VBA ทำตามนี้ –
- ประการแรก จาก นักพัฒนา แท็บ>>> เลือก Visual Basic .
หรือคุณสามารถกด ALT + F11 เพื่อแสดง VBA หน้าต่าง
- ประการที่สอง จาก แทรก >>> เลือก โมดูล .
ในหน้าต่างนี้ เราจะพิมพ์รหัสของเรา
- พิมพ์รหัสต่อไปนี้
Sub Send_Email_Condition_Cell_Value_Change()
Dim pApp As Object
Dim pMail As Object
Dim pBody As String
Set pApp = CreateObject("Outlook.Application")
Set pMail = pApp.CreateItem(0)
pBody = "Hello, " & Range("B5").Value & vbNewLine & _
"You've Payment Due." & vbNewLine & _
"Please Pay it to avoid extra fees."
On Error Resume Next
With pMail
.To = Range("C5").Value
.CC = ""
.BCC = ""
.Subject = "Request For Payment"
.Body = pBody
.Display 'We can use .Send to Send the Email
End With
On Error GoTo 0
Set pMail = Nothing
Set pApp = Nothing
End Sub
รายละเอียดโค้ด VBA
- ประการแรก เรากำลังเรียกขั้นตอนย่อย Send_Email_Condition_Cell_Value_Change .
- ประการที่สอง เรากำลังประกาศ ตัวแปร ประเภท
- ประการที่สาม เรากำลังเลือก Outlook เป็น แอปพลิเคชันอีเมล . ของเรา .
- จากนั้น อีเมล เนื้อหาถูกกำหนดไว้ในโค้ดของเรา
- หลังจากนั้น “.Display ” ใช้ที่นี่เพื่อแสดง อีเมล . ของเรา . จึงต้องกด ส่ง ด้วยตนเองเพื่อ ส่ง อีเมล . นอกจากนี้เรายังสามารถใช้ “.ส่ง ” เพื่อ ส่งอีเมล โดยไม่ต้องแสดง
- หลังจากนั้น บันทึก และปิด โมดูล .
ตอนนี้ ในชุดข้อมูลของเรา เราสามารถพิมพ์ 699 , และจะไม่มีอะไรเกิดขึ้น
แต่ถ้าเราพิมพ์ 801 (มากกว่า 700 ) จากนั้นโค้ดของเราจะดำเนินการ
อีเมล Outlook จะแสดงตัวเลือกการส่ง เราสามารถกด ส่ง เพื่อ ส่ง อีเมล ที่อยู่
อ่านเพิ่มเติม: วิธีส่งอีเมลจากรายการ Excel (2 วิธีที่มีประสิทธิภาพ)
2. การใช้ VBA เพื่อส่งอีเมลหากตรงตามเงื่อนไขหลายข้อ
สำหรับวิธีที่สอง เราได้เปลี่ยนชุดข้อมูลแล้ว เราจะ ส่งอีเมล เมื่อหลาย เงื่อนไข ได้ พบ ในวิธีนี้ นอกจากนี้ เราจะใช้ 2 ขั้นตอนย่อย ใน โมดูล . เดียว สำหรับสิ่งนี้. หากโค้ดของเราทำงานตามที่ตั้งใจไว้ เราจะ ส่งอีเมล ถึง 2 ผู้คน. นอกจากนี้ เราจะแนบไฟล์ไปกับอีเมล .
ขั้นตอน:
- ประการแรก ตามที่แสดงในวิธีแรก , เรียก โมดูล หน้าต่างและพิมพ์รหัสนี้
Option Explicit
Sub Send_Email_Condition()
Dim xSheet As Worksheet
Dim mAddress As String, mSubject As String, eName As String
Dim eRow As Long, x As Long
Set xSheet = ThisWorkbook.Sheets("Conditions")
With xSheet
eRow = .Cells(.Rows.Count, 5).End(xlUp).Row
For x = 5 To eRow
If .Cells(x, 4) >= 1 And .Cells(x, 5) = "Yes" Then
mAddress = .Cells(x, 3)
mSubject = "Request For Payment"
eName = .Cells(x, 2)
Call Send_Email_With_Multiple_Condition(mAddress, mSubject, eName)
End If
Next x
End With
End Sub
Sub Send_Email_With_Multiple_Condition(mAddress As String, mSubject As String, eName As String)
Dim pApp As Object
Dim pMail As Object
Set pApp = CreateObject("Outlook.Application")
Set pMail = pApp.CreateItem(0)
With pMail
.To = mAddress
.CC = ""
.BCC = ""
.Subject = mSubject
.Body = "Mr./Mrs. " & eName & ", Please pay it within the next week."
.Attachments.Add ActiveWorkbook.FullName 'Send The File via Email
.Display 'We can use .Send here too
End With
Set pMail = Nothing
Set pApp = Nothing
End Sub
รายละเอียดโค้ด VBA
- ประการแรก เรากำลังเรียกใช้ขั้นตอนย่อย Send_Email_Condition .
- ประการที่สอง เรากำลังประกาศ ตัวแปร ประเภทและการตั้งค่า “เงื่อนไข ” เป็น ชีต . ของเรา .
- ประการที่สาม แถวสุดท้าย พบหมายเลข นอกจากนี้ ค่าของเราเริ่มต้นจาก แถวที่ 5 ดังนั้นเราจึงใส่ แถวที่ 5 ไปยัง แถวสุดท้าย ในรหัสของเรา
- จากนั้นเรียกขั้นตอนย่อยที่สองของเรา Send_Email_With_Multiple_Condition .
- หลังจากนั้น เรากำลังเลือก Outlook เป็น แอปพลิเคชันอีเมล . ของเรา .
- จากนั้น ตั้งค่า อีเมล เนื้อหาในโค้ดของเรา
- ที่นี่ เรากำลังแนบ Excel ไฟล์ที่มี อีเมล โดยใช้ สิ่งที่แนบมา วิธีการ
- หลังจากนั้น “.Display ” ใช้ที่นี่เพื่อแสดง อีเมล . ของเรา . จึงต้องกด ส่ง ด้วยตนเองเพื่อ ส่ง อีเมล . นอกจากนี้เรายังสามารถใช้ “.ส่ง ” เพื่อ ส่งอีเมล โดยไม่ต้องแสดง
- ประการที่สอง บันทึก และปิด โมดูล .
ตอนนี้ เราจะนำ มาโคร หน้าต่างเพื่อรันโค้ดของเรา
- ประการแรก จาก นักพัฒนา แท็บ>>> เลือก มาโคร .
มาโคร หน้าต่างจะปรากฏขึ้น
- ประการที่สอง เลือก “Send_Email_Condition ”.
- สุดท้าย กด เรียกใช้ .
สิ่งนี้จะรันโค้ดของเรา สองคน เจอ เงื่อนไขของเรา ดังนั้น เราจะเห็น อีเมล สองฉบับ หน้าต่างที่นี่
อ่านเพิ่มเติม: วิธีการส่งอีเมลโดยอัตโนมัติเมื่อตรงตามเงื่อนไขใน Excel
การอ่านที่คล้ายกัน
- วิธีเปิดใช้งานการแชร์เวิร์กบุ๊กใน Excel
- วิธีการส่งอีเมลจำนวนมากจาก Outlook โดยใช้ Excel (3 วิธี)
- มาโครเพื่อส่งอีเมลจาก Excel พร้อมเนื้อหา (3 กรณีที่เป็นประโยชน์)
- วิธีการใช้มาโครเพื่อส่งอีเมลจาก Excel พร้อมไฟล์แนบ
- วิธีแชร์ไฟล์ Excel ออนไลน์ (2 วิธีง่ายๆ)
3. ส่งอีเมลใน Excel ตามเงื่อนไขวันที่
สำหรับวิธีสุดท้าย เราจะ ส่งอีเมล หากกำหนดเส้นตายอยู่ภายในระยะเวลาหนึ่งสัปดาห์นับจากวันที่ปัจจุบัน วันนี้ 19 พฤษภาคม 2022 ในขณะที่เขียนบทความนี้ ดังนั้นจึงมี แถว . เพียงแถวเดียว ที่ตกลงมาภายในเจ็ดวัน นั่นคือ แถวที่ 5 . เราจะ ส่ง อีเมล ถึงบุคคลนั้นโดยใช้ VBA รหัส.
ขั้นตอน:
- ประการแรก ตามที่แสดงในวิธีแรก , เรียก โมดูล หน้าต่างและพิมพ์รหัสนี้
Public Sub Send_Email_Date_Condition()
Dim rDate, rSend, rText As Range
Dim pApp, pItem As Object
Dim LRow, x As Long
Dim lineBreak, pBody, rSendValue, mSubject As String
On Error Resume Next
Set rDate = Application.InputBox("Select Deadline Range:", "Exceldemy", , , , , , 8)
If rDate Is Nothing Then Exit Sub
Set rSend = Application.InputBox("Select Email Range:", "Exceldemy", , , , , , 8)
If rSend Is Nothing Then Exit Sub
Set rText = Application.InputBox("Select Email Topic Range:", "Exceldemy", , , , , , 8)
If rText Is Nothing Then Exit Sub
LRow = rDate.Rows.Count
Set rDate = rDate(1)
Set rSend = rSend(1)
Set rText = rText(1)
Set pApp = CreateObject("Outlook.Application")
For x = 1 To LRow
rDateValue = ""
rDateValue = rDate.Offset(x - 1).Value
If rDateValue <> "" Then
If CDate(rDateValue) - Date <= 7 And CDate(rDateValue) - Date > 0 Then
rSendValue = rSend.Offset(x - 1).Value
mSubject = rText.Offset(x - 1).Value & " on " & rDateValue
lineBreak = "<br><br>"
pBody = "<HTML><BODY>"
pBody = pBody & "Dear " & rSendValue & lineBreak
pBody = pBody & rText.Offset(x - 1).Value & lineBreak
pBody = pBody & "</BODY></HTML>"
Set pItem = pApp.CreateItem(0)
With pItem
.Subject = mSubject
.To = rSendValue
.HTMLBody = pBody
.Display 'We can also use .Send here
End With
Set pItem = Nothing
End If
End If
Next
Set pApp = Nothing
End Sub
รายละเอียดโค้ด VBA
- ประการแรก เรากำลังเรียกใช้ขั้นตอนย่อย Send_Email_Date_Condition .
- ประการที่สอง เรากำลังประกาศ ตัวแปร ประเภทและการตั้งค่า “เงื่อนไข ” เป็น ชีต . ของเรา .
- ประการที่สาม เรากำลังใช้ InputBox เพื่อกำหนดช่วงของค่าของเรา
- หลังจากนั้น เรากำลังเลือก Outlook เป็น แอปพลิเคชันอีเมล . ของเรา .
- จากนั้น เรากำลังใช้ VBA Cdate ฟังก์ชันตรวจสอบว่าวันที่อยู่ภายในเจ็ดวันนับจากวันที่ปัจจุบันหรือไม่
- Then, set the email content in our code.
- After that, use “.Display ” to show our email . Therefore, we’ll need to press Send manually to send the emails . Moreover, we can use “.Send ” to send email without displaying.
- Secondly, Save and close the Module .
- Thirdly, as shown in method 2 , bring up the Macro หน้าต่าง
- Then, select “Send_Email_Date_Condition ” and press Run .
- Firstly, select the date column แล้วกด ตกลง .
- Secondly. select the email column แล้วกด ตกลง .
- Thirdly, select the email content column แล้วกด ตกลง .
- Then we’ll see the email กล่องโต้ตอบ We can press Send to achieve our goal.
อ่านเพิ่มเติม: How to Automatically Send Email from Excel Based on Date
สิ่งที่ควรจำ
- In all our methods, Outlook was our default email Application . You may need to use different codes for separate Applications .
ภาคปฏิบัติ
We’ve added practice datasets for each method in the Excel ไฟล์.
บทสรุป
We’ve shown you 3 methods to send an email if conditions met ใน Excel . ขอบคุณสำหรับการอ่าน ยอดเยี่ยมต่อไป!
บทความที่เกี่ยวข้อง
- วิธีการส่งอีเมลจาก Excel ด้วยเนื้อความโดยใช้มาโคร (ด้วยขั้นตอนง่ายๆ)
- How to Send Automatic Email from Excel to Outlook (4 Methods)
- ส่งอีเมลจาก Excel โดยอัตโนมัติตามเนื้อหาของเซลล์ (2 วิธี)
- วิธีการส่งไฟล์ Excel ไปยังอีเมลโดยอัตโนมัติ (วิธีที่เหมาะสม 3 วิธี)
- ส่งอีเมลเตือนความจำโดยอัตโนมัติจากแผ่นงาน Excel โดยใช้ VBA
- How to See Who Is in a Shared Excel File (With Quick Steps)