Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

ส่งอีเมลอัตโนมัติตามวันที่จาก Excel: 3 วิธีที่มีประสิทธิภาพ

บทความนี้จะแนะนำวิธีที่ดีที่สุดในการ ส่งอีเมลอัตโนมัติ จาก Excel ตาม วันที่ โดยปกติการส่งอีเมลจาก Outlook หรือ Gmail ง่าย แต่หากต้องการส่งในเวลาหรือวันที่เฉพาะ สามารถใช้ Microsoft Excel ทำได้อย่างมีประสิทธิภาพ

ในชุดข้อมูล เรามี ที่อยู่อีเมล บางรายการ (ทั้งหมดเป็นที่อยู่จำลอง ยกเว้น admin@wsxdn.com ซึ่งเป็นของผม ใช้เพื่อสาธิตว่าวิธีการทำงานจริง)

3 วิธีส่งอีเมลอัตโนมัติจาก Excel ตามวันที่

1. ใช้ Excel VBA ส่งอีเมลอัตโนมัติตามวันที่คงที่ (Fixed Date)

เราสามารถส่ง อีเมลอัตโนมัติ ด้วย Microsoft Visual Basic for Applications (VBA) ตาม วันที่ คุณสามารถสร้างรายการ วันที่ ที่ต้องการส่ง อีเมล ให้ผู้รับแต่ละราย เรียนรู้ขั้นตอนด้านล่าง ในส่วนนี้เราจะทำงานกับ วันที่ เท่านั้น

ขั้นตอน:

  • ไปที่ Developer >> Visual Basic
  • หน้าต่าง VBA จะเปิดขึ้น เลือก Insert >> Module
  • พิมพ์โค้ดต่อไปนี้ใน VBA Module:
Sub SendEmail01()
Dim Range_Select As Range
Dim Date_Range As Range
Dim Cell_Address As String
Dim Subject, Email_From, Email_To, Cc, Bcc, Email_Text As String
Dim Email_Obj, Single_Mail As Object
On Error Resume Next
Cell_Address = ActiveWindow.RangeSelection.Address
Set Range_Select = Application.InputBox("Select a range:", "Message Box", Cell_Address, , , , , 8)
If Range_Select Is Nothing Then Exit Sub
For Each Date_Range In Range_Select
If Date_Range.Value = Date Then
Subject = Application.InputBox("Subject: ", "Message", , , , , , 2)
Email_From = Application.InputBox("Send from: ", "Message Box", , , , , , 2)
Email_To = Application.InputBox("Send to: ", "Message Box", , , , , , 2)
If Email_To = "" Then Exit Sub
Cc = Application.InputBox("CC: ", "Message Box", , , , , , 2)
Bcc = Application.InputBox("BCC: ", "Message Box", , , , , , 2)
Email_Text = Application.InputBox("Message Body: ", "Message Box", , , , , , 2)
Set Email_Obj = CreateObject("Outlook.Application")
Set Single_Mail = Email_Obj.CreateItem(0)
With Single_Mail
.Subject = Subject
.To = Email_To
.Cc = Cc
.Bcc = Bcc
.Body = Email_Text
.send
End With
End If
Next
End Sub

คำอธิบายโค้ด

  • ประกาศตัวแปรที่จำเป็น: Range_Select และ Date_Range เป็น Range; Cell_Address, Subject, Email_From, Email_To, Cc, Bcc, Email_Text เป็น String; Email_Obj และ Single_Mail เป็น Object
  • ตั้งค่า Range_Select ให้เป็น InputBox สำหรับเลือก ช่วงเซลล์ ผ่าน Message Box
  • ใช้ Value ใน VBA IF Statement และตั้งค่า Subject, Email_From และ Email_To เป็น InputBox
  • หากไม่มี ที่อยู่อีเมล (Email_To = "") Sub Procedure จะ Exit มิฉะนั้นจะใส่ตัวแปรเพิ่มใน IF Statement ใหม่ Cc และ Bcc หมายถึง Carbon Copy และ Blind Carbon Copy ของ อีเมล
  • สร้าง Outlook Application Object ซึ่งกำหนดโดย Email_Obj และใช้ Single_Mail สร้าง Item สำหรับ Email_Obj
  • กำหนด Subject, Email_To, Cc, Bcc, Email_Text เป็นส่วนประกอบของ อีเมล ด้วย With Statement รวมคำสั่ง .Send ด้วย
  • กลับไปที่ชีตและรัน Macro ชื่อ SendEmail01 (เพราะเป็นชื่อ Macro ปัจจุบัน)
  • หลังรัน จะมี Message Box ขึ้นให้เลือก ช่วงวันที่ (date range) เลือกช่วงและกด OK
  • จะมี Message Box ขึ้นมาหลายกล่อง ให้กรอกข้อมูลสำหรับส่งอีเมล ตามลำดับ: เรื่อง, อีเมลผู้ส่ง, อีเมลผู้รับ, CC, BCC, ข้อความ
  • หลังกล่องสุดท้าย อาจมี Warning Box จาก Microsoft Outlook ให้กด Allow
  • การดำเนินการนี้จะส่ง อีเมล ไปยังที่อยู่ที่คุณกรอกในกล่องข้อความ

อ่านเพิ่มเติม: Excel Macro ส่งอีเมลอัตโนมัติ (3 ตัวอย่างที่เหมาะสม)

2. ส่งอีเมลอัตโนมัติจาก Excel ตามวันที่ในอนาคต (Following Dates)

ในส่วนนี้ เราจะ ส่งอีเมล ตาม วันที่ในอนาคต สมมติต้องการส่งอีเมลล่วงหน้า 3 วัน หรือ 7 วัน เรียนรู้ขั้นตอนด้านล่าง

ขั้นตอน:

  • ดูวิธีเปิด VBA Module ในส่วนที่ 1
  • พิมพ์โค้ดต่อไปนี้ใน VBA Module:
Public Sub SendEmail02()
Dim Date_Range As Range
Dim Mail_Recipient As Range
Dim Email_Text As Range
Dim Outlook_App_Create As Object
Dim Mail_Item As Object
Dim Last_Row As Long
Dim VB_CR_LF, Email_Body, Date_Range_Value, Send_Value, Subject As String
Dim i As Long
On Error Resume Next
Set Date_Range = Application.InputBox("Please choose the date range:", "Message Box", , , , , , 8)
If Date_Range Is Nothing Then Exit Sub
Set Mail_Recipient = Application.InputBox("Please select the Email addresses:", "Message Box", , , , , , 8)
If Mail_Recipient Is Nothing Then Exit Sub
Set Email_Text = Application.InputBox("Select the Email Text:", "Message Box", , , , , , 8)
If Email_Text Is Nothing Then Exit Sub
Last_Row = Date_Range.Rows.Count
Set Date_Range = Date_Range(1)
Set Mail_Recipient = Mail_Recipient(1)
Set Email_Text = Email_Text(1)
Set Outlook_App_Create = CreateObject("Outlook.Application")
For i = 1 To Last_Row
Date_Range_Value = ""
Date_Range_Value = Date_Range.Offset(i - 1).Value
If Date_Range_Value <> "" Then
If CDate(Date_Range_Value) - Date <= 7 And CDate(Date_Range_Value) - Date > 0 Then
Send_Value = Mail_Recipient.Offset(i - 1).Value
Subject = Email_Text.Offset(i - 1).Value & " on " & Date_Range_Value
VB_CR_LF = "

" Email_Body = "" Email_Body = Email_Body & "Dear " & Send_Value & VB_CR_LF Email_Body = Email_Body & "Text : " & Email_Text.Offset(i - 1).Value & VB_CR_LF Email_Body = Email_Body & "" Set Mail_Item = Outlook_App_Create.CreateItem(0) With Mail_Item .Subject = Subject .To = Send_Value .HTMLBody = Email_Body .Display End With Set Mail_Item = Nothing End If End If Next Set Outlook_App_Create = Nothing End Sub

คำอธิบายโค้ด

  • ประกาศตัวแปร: Date_Range, Mail_Recipient, Email_Text เป็น Range; Outlook_App_Create, Mail_Item เป็น Object; Last_Row, i เป็น Long; VB_CR_LF (Visual Basic Carriage Return Line Feed), Email_Body, Date_Range_Value, Send_Value, Subject เป็น String
  • ตั้งค่า Date_Range เป็น InputBox เลือก ช่วงวันที่ มี If Statement ยกเลิกถ้า Date_Range เป็น Nothing
  • ตั้งค่า Mail_Recipient และ Email_Text เป็น InputBox เช่นกัน
  • สร้าง Outlook Application Object โดย Outlook_App_Create
  • กำหนดช่วงวันที่ (Date Interval) ในโค้ดนี้คือ 7 วัน สมมติต้องการเตือนเหตุการณ์หรือทักทาย 7 วันหลังจากวันนี้ (19 พฤษภาคม) หากอีเมลที่ต้องการส่งอยู่ระหว่าง 20-26 พฤษภาคม จะส่งถึงผู้รับ มิฉะนั้นจะไม่ส่ง
  • จัดรูปแบบ Email_Body และกำหนดส่วนประกอบอีเมลด้วย With Statement
  • ใช้คำสั่ง .Display เพื่อให้ Outlook เปิด草稿อีเมล ให้ตรวจสอบก่อนส่ง สามารถใช้ .Send ถ้าไม่ต้องการดู草稿 แต่ห้ามใช้ทั้งสองคำสั่งพร้อมกัน
  • กลับไปที่ชีต รัน Macro ชื่อ SendEmail02
  • จะมี Message Box ให้เลือก ช่วงวันที่ เลือกและกด OK
  • ต่อมา Message Box ให้เลือก ช่วงที่อยู่อีเมล เลือกและกด OK
  • ต่อมา Message Box ให้เลือก ช่วงข้อความ เลือกและกด OK
  • จะเห็น 草稿อีเมล สำหรับวันที่ 21-24 พฤษภาคม ที่นี่ ID admin@wsxdn.com เป็นอีเมลจริง จึงส่งตัวอย่างไปที่นี่ สามารถเพิ่ม CC ได้
  • ตรวจสอบกล่องอีเมล (อาจอยู่ในกล่อง Spam ด้วย)

ดังนั้น คุณสามารถ ส่งอีเมลอัตโนมัติ ตามวันที่ในอนาคตได้

อ่านเพิ่มเติม: ส่งอีเมลเตือนอัตโนมัติจากเวิร์กชีต Excel ด้วย VBA

บทความคล้ายกัน

  • วิธีดูว่าใครอยู่ในไฟล์ Excel แบบแชร์ (พร้อมขั้นตอนเร็ว)
  • เปิดใช้งาน Share Workbook ใน Excel
  • วิธีแชร์ไฟล์ Excel ให้หลายคนใช้งาน
  • ส่งอีเมลจำนวนมากจาก Outlook ด้วย Excel (3 วิธี)
  • วิธีใช้ Macro ส่งอีเมลจาก Excel พร้อมไฟล์แนบ

3. ส่งอีเมลอัตโนมัติไปที่อยู่เดียวตามวันที่

เรายังสามารถส่ง อีเมลอัตโนมัติ ไปที่อยู่เดียวตาม วันที่ ได้ สร้างรายการ วันที่ ที่ต้องการส่ง อีเมล ให้ผู้รับ เรียนรู้ขั้นตอนด้านล่าง ในส่วนนี้ทำงานกับ วันที่ เท่านั้น

ขั้นตอน:

  • ดูวิธีเปิด VBA Module ในส่วนที่ 1
  • พิมพ์โค้ดต่อไปนี้ใน VBA Module:
Option Explicit
Sub SendEmail03()
Dim Date_Range As Range
Dim rng As Range
Set Date_Range = Range("B5:B10")
For Each rng In Date_Range
If rng.Value = Date Then
Dim Subject, Send_From, Send_To, Cc, Bcc, Body As String
Dim Email_Obj, Single_Mail As Variant
Subject = "Hello there!"
Send_From = "admin@wsxdn.com"
Send_To = "admin@wsxdn.com"
Cc = "admin@wsxdn.com"
Bcc = ""
Body = "Hope you are enjoying the article"
On Error GoTo debugs
Set Email_Obj = CreateObject("Outlook.Application")
Set Single_Mail = Email_Obj.CreateItem(0)
With Single_Mail
.Subject = Subject
.To = Send_To
.Cc = Cc
.Bcc = Bcc
.Body = Body
.send
End With
End If
Next
Exit Sub
debugs:
If Err.Description <> "" Then MsgBox Err.Description
End Sub

คำอธิบายโค้ด

  • ประกาศตัวแปร: rng และ Date_Range เป็น Range
  • กำหนด Range สำหรับ Date_Range
  • ใช้ Value ใน VBA IF Statement ตั้งค่า Subject, Send_From, Send_To, Cc, Bcc, Body เป็น String ตั้งค่า Email_Obj, Single_Mail เป็น Variant
  • ตั้งค่าข้อความสำหรับ Subject, Send_From, Send_To, Cc, Bcc
  • สร้าง Outlook Application Object โดย Email_Obj ใช้ Single_Mail สร้าง Item ให้ Email_Obj
  • กำหนดส่วนประกอบอีเมลด้วย With Statement รวมคำสั่ง .Send
  • กลับไปที่ชีต รัน Macro ชื่อ SendEmail01 (ชื่อ Macro ปัจจุบัน)
  • อาจมี Warning Box จาก Microsoft Outlook ให้กด Allow
  • การดำเนินการนี้จะส่ง อีเมล ไปยังที่อยู่ที่กรอกในกล่องข้อความ

อ่านเพิ่มเติม: วิธีส่งอีเมลอัตโนมัติเมื่อเงื่อนไขตรงกันใน Excel

ส่วนฝึกหัด

ในส่วนนี้ ให้ชุดข้อมูลที่ใช้ในบทความ เพื่อให้คุณฝึกปฏิบัติด้วยตัวเอง

ข้อควรจำ

เปิดและล็อกอินเข้าสู่บัญชี Outlook เสมอก่อนรันโค้ด VBA ในบทความนี้

สรุป

สรุปคือ คุณจะได้เรียนรู้วิธีที่มีประสิทธิภาพในการ ส่งอีเมลอัตโนมัติ จาก Excel ตาม วันที่ หากมีไอเดียหรือข้อเสนอแนะดีกว่า กรุณาแบ่งปันในกล่องความคิดเห็น จะช่วยทำให้บทความหน้าดีขึ้น

บทความเกี่ยวข้อง

  • [Solved]: Share Workbook Not Showing in Excel (with Easy Steps)
  • วิธีส่งอีเมลจากรายการ Excel (2 วิธีที่มีประสิทธิภาพ)
  • วิธีส่งสเปรดชีต Excel ที่แก้ไขได้ทางอีเมล (3 วิธีเร็ว)
  • Macro ส่งอีเมลจาก Excel (5 ตัวอย่างที่เหมาะสม)
  • Macro ส่งอีเมลจาก Excel พร้อมเนื้อหา (3 กรณีที่มีประโยชน์)
  • Excel Macro: ส่งอีเมลไปที่อยู่ในเซลล์ (2 วิธีง่าย)