Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Office

Tự động gửi email theo ngày từ Excel

Bài viết sẽ chỉ cho bạn những cách tốt nhất để tự động gửi Email từ Excel dựa trên ngày. Thông thường, việc gửi Email từ Outlook hoặc Gmail khá dễ dàng, nhưng khi bạn muốn gửi Email vào một thời điểm hoặc ngày nhất định, bạn có thể sử dụng Microsoft Excel hiệu quả.

Trong tập dữ liệu, chúng ta có một số địa chỉ email (tất cả đều là địa chỉ giả trừ admin@wsxdn.com, là của tôi. Tôi dùng địa chỉ của mình để cho bạn thấy cách các phương pháp hoạt động.

Tự động gửi email theo ngày từ Excel

3 cách tự động gửi Email từ Excel dựa trên ngày

1. Sử dụng Excel VBA để tự động gửi Email dựa trên ngày cố định

Chúng ta có thể gửi Email tự động bằng cách sử dụng Microsoft Visual Basic for Application (VBA) dựa trên ngày. Bạn có thể tạo danh sách các ngày khi bạn muốn gửi Email đến người nhận tương ứng. Hãy xem quy trình dưới đây để hiểu rõ hơn. Trong phần này, chúng ta chỉ làm việc với ngày.

Các bước:

  • Trước hết, vào Developer >> Visual Basic

Tự động gửi email theo ngày từ Excel

  • Sau đó cửa sổ VBA sẽ mở ra. Chọn Insert >> Module
  • Tự động gửi email theo ngày từ ExcelNhập mã sau vào Module VBA.
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

Tự động gửi email theo ngày từ Excel

Giải thích mã

  • Trước hết, chúng tôi khai báo các biến cần thiết: Range_Select và Date_Range là Range; Cell_Address, Subject, Email_From, Email_To, Cc, Bcc, Email_Text là String; Email_Obj và Single_Mail là Object.
  • Sau đó, chúng tôi đặt Range_Select vào một InputBox nơi nó có thể chọn một phạm vi ô qua Hộp thông báo.
  • Tiếp theo, chúng tôi dùng Value trong Câu lệnh IF VBA và cũng đặt Subject, Email_From và Email_To vào InputBox.
  • Nếu không có Địa chỉ Email (Email_To= “”), Thủ tục con sẽ thoát. Ngược lại, chúng ta đặt thêm một số biến trong Câu lệnh IF mới. Cc và Bcc tham chiếu đến Carbon Copy và Blind Carbon Copy của Email mà chúng ta muốn gửi cho những người khác nhau.
  • Sau đó, chúng ta tạo một Đối tượng Ứng dụng Outlook mà chúng ta định nghĩa bằng Email_Obj. Ngoài ra, chúng ta dùng Single_Mail để tạo một mục cho Email_Obj.
  • Sau đó, chúng ta định nghĩa Subject, Email_To, Cc, Bcc, Email_Text như các phần cần thiết của một Email bằng Câu lệnh With. Chúng ta cũng đặt lệnh .Send trong câu lệnh này.

  • Bây giờ, quay lại trang tính của bạn và chạy Macro tên SendEmail01 vì đó là tên của Macro hiện tại.

Tự động gửi email theo ngày từ Excel

  • Sau khi thực hiện thao tác này, bạn sẽ thấy một Hộp thông báo hiện lên yêu cầu bạn chọn phạm vi ngày. Chọn phạm vi và nhấp OK.

Tự động gửi email theo ngày từ Excel

  • Sau đó, một Hộp thông báo khác sẽ hiện lên. Gõ chủ đề và nhấp OK.

Tự động gửi email theo ngày từ Excel

  • Bạn sẽ thấy một chuỗi Hộp thông báo yêu cầu bạn nhập thông tin cần thiết để gửi Email. Chỉ cần làm theo các hình ảnh dưới đây.
  • Nhập Địa chỉ Email của bạn.

Tự động gửi email theo ngày từ Excel

  • Nhập Địa chỉ Email nơi bạn sẽ gửi Email.

Tự động gửi email theo ngày từ Excel

  • Chèn địa chỉ người nhận CC.

Tự động gửi email theo ngày từ Excel

  • Điền người nhận BCC trong Hộp thông báo nếu muốn. Tôi không chọn ai.

Tự động gửi email theo ngày từ Excel

  • Gõ tin nhắn của bạn.

Tự động gửi email theo ngày từ Excel

  • Sau Hộp thông báo cuối cùng, bạn có thể thấy một hộp cảnh báo từ Microsoft Outlook. Nhấp Allow (Cho phép).

Tự động gửi email theo ngày từ Excel

Thao tác này sẽ gửi Email đến các địa chỉ bạn đã nhập trong các hộp thông báo tương ứng.
Đây là Email chính.

Tự động gửi email theo ngày từ Excel

Và bên dưới đây là bản Carbon Copy của Email.

Tự động gửi email theo ngày từ Excel

Như vậy, bạn có thể tự động gửi một Email từ Excel dựa trên ngày.

Đọc thêm: Excel Macro để gửi Email tự động (3 ví dụ phù hợp)

2. Gửi Email tự động từ Excel dựa trên các ngày tiếp theo

Trong phần này, chúng ta sẽ gửi Email dựa trên các ngày tiếp theo hoặc trong tương lai. Giả sử bạn muốn gửi cho ai đó một Email trước 3 ngày hoặc 7 ngày. Hãy xem thảo luận sau về vấn đề này.

Các bước:

  • Trước hết, xem Phần 1 để biết cách mở Module VBA.
  • Sau đó nhập mã sau vào Module VBA.
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

Tự động gửi email theo ngày từ Excel

Giải thích mã

  • Trước hết, chúng tôi khai báo các biến cần thiết: Date_Range, Mail_Recipient và Email_Text là Range; Outlook_App_Create và Mail_Item là Object; Last_Row và i là Long; VB_CR_LF (Visual Basic Carriage Return Line Feed), Email_Body, Date_Range_Value, Send_Value, Subject là String.
  • Sau đó, chúng tôi đặt Date_Range vào InputBox nơi nó có thể chọn phạm vi ngày qua Hộp thông báo. Một Câu lệnh If được dùng để kết thúc Thủ tục con nếu Date_Range là Nothing.
  • Chúng tôi cũng đặt Mail_Recipient và Email_Text vào InputBox.
  • Tiếp theo, chúng tôi tạo một Đối tượng Ứng dụng Outlook mà chúng tôi định nghĩa bằng Outlook_App_Create.
  • Một khoảng ngày được đưa vào. Trong mã này, khoảng thời gian là 7. Giả sử bạn muốn nhắc ai đó về sự kiện hoặc chúc mừng 7 ngày sau hôm nay là ngày 19 tháng 5. Nếu các Email bạn muốn gửi nằm trong ngày từ 20 đến 26 tháng 5, người nhận sẽ nhận được Email. Nếu không, sẽ không gửi.
  • Sau đó, chúng ta đặt một số lệnh để định dạng Email_Body. Và cũng định nghĩa các phần cần thiết của Email bằng Câu lệnh With.
  • Chúng tôi dùng lệnh .Display ở đây để Outlook sẽ mở các bản nháp Email này và chúng ta có thể kiểm tra nếu cần gửi tin nhắn khác. Bạn có thể dùng lệnh .Send nếu không muốn xem bản nháp. Nhưng không dùng hai lệnh này cùng lúc.

  • Bây giờ, quay lại trang tính và chạy Macro tên SendEmail02 vì đó là tên Macro hiện tại.

Tự động gửi email theo ngày từ Excel

  • Sau khi thực hiện, một hộp thông báo sẽ hiện lên yêu cầu chọn phạm vi ngày. Chọn phạm vi và nhấp OK.

Tự động gửi email theo ngày từ Excel

  • Sau đó, một hộp thông báo khác sẽ hiện lên và yêu cầu bạn chọn phạm vi địa chỉ Email. Chọn phạm vi và nhấp OK.

Tự động gửi email theo ngày từ Excel

  • Tiếp theo, chọn phạm vi của tin nhắn văn bản trong hộp thông báo và nhấp OK.

Tự động gửi email theo ngày từ Excel

  • Bạn sẽ thấy các bản nháp Email cho ngày 21 tháng 5 đến ngày 24 tháng 5. Ở đây, ID admin@wsxdn.com là ID Email thực tế, nên chúng tôi đã gửi Email tương ứng đến địa chỉ này để cho bạn thấy ví dụ. Bạn có thể thêm người nhận CC nếu muốn.

Tự động gửi email theo ngày từ Excel

  • Hãy kiểm tra Email của tôi. Thư này có thể rơi vào hộp Spam. Vì vậy hãy kiểm tra mọi nơi.

Tự động gửi email theo ngày từ Excel

Như vậy, bạn có thể tự động gửi email dựa trên các ngày tiếp theo

Đọc thêm: Gửi Email nhắc nhở tự động từ trang tính Excel bằng VBA

Đọc thêm tương tự

  • Cách xem ai đang ở trong file Excel chia sẻ (Với các bước nhanh)
  • Bật chia sổ làm việc trong Excel
  • Cách chia sẻ file Excel cho nhiều người dùng
  • Gửi Email hàng loạt từ Outlook dùng Excel (3 cách)
  • Cách áp dụng Macro để gửi Email từ Excel kèm tệp đính kèm

3. Tự động gửi Email đến một địa chỉ duy nhất dựa trên ngày

Chúng ta cũng có thể gửi Email tự động đến một địa chỉ duy nhất dựa trên ngày. Bạn có thể tạo danh sách ngày khi bạn muốn gửi Email đến người nhận tương ứng. Hãy xem quy trình dưới đây để hiểu rõ hơn. Trong phần này, chúng ta chỉ làm việc với ngày.

Các bước:

  • Trước hết, xem Phần 1 để biết cách mở Module VBA.
  • Nhập mã sau vào Module VBA.
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 

Tự động gửi email theo ngày từ Excel

Giải thích mã

  • Trước hết, chúng tôi khai báo các biến cần thiết: rng và Date_Range là Range.
  • Sau đó, chúng tôi xác định phạm vi cho Date_Range.
  • Tiếp theo, chúng tôi dùng Value trong Câu lệnh IF VBA và cũng đặt Subject, Send_From, Send_To, Cc, Bcc và Body là String. Cũng đặt Email_Obj và Single_Mail là Variant.
  • Sau đó, chúng tôi đặt giá trị văn bản cho Subject, Send_From, Send_To, Cc và Bcc.
  • Sau đó, chúng tôi tạo một Đối tượng Ứng dụng Outlook mà chúng tôi định nghĩa bằng Email_Obj. Cũng dùng Single_Mail để tạo một mục cho Email_Obj.
  • Tiếp theo, chúng tôi định nghĩa Subject, Send_To, Cc, Bcc, Body như các phần cần thiết của một Email bằng Câu lệnh With. Chúng tôi cũng đặt lệnh .Send trong câu lệnh này.

  • Bây giờ, quay lại trang tính và chạy Macro tên SendEmail01 vì đó là tên Macro hiện tại.

Tự động gửi email theo ngày từ Excel

  • Sau đó, bạn có thể thấy một hộp cảnh báo từ Microsoft Outlook. Nhấp Allow.

Tự động gửi email theo ngày từ Excel

Thao tác này sẽ gửi Email đến các địa chỉ bạn đã nhập trong các hộp thông báo tương ứng.

Đây là Email chính.

Tự động gửi email theo ngày từ Excel

Và bên dưới đây là bản Carbon Copy của Email.

Tự động gửi email theo ngày từ Excel

Như vậy, bạn có thể tự động gửi một Email từ Excel dựa trên ngày.

Đọc thêm: Cách gửi Email tự động khi điều kiện đáp ứng trong Excel

Phần thực hành

Trong phần này, tôi cung cấp cho bạn tập dữ liệu chúng tôi đã dùng trong bài viết này để bạn có thể tự thực hành.

Tự động gửi email theo ngày từ Excel

Lưu ý quan trọng

Luôn mở và đăng nhập vào tài khoản Outlook của bạn để chạy các mã VBA trong bài viết này.

Kết luận

Tóm lại, bạn sẽ học được các phương pháp hiệu quả về cách tự động gửi Email từ Excel dựa trên ngày. Nếu bạn có ý tưởng hay hoặc phản hồi tốt hơn, vui lòng chia sẻ trong hộp bình luận. Điều này sẽ giúp tôi làm giàu các bài viết sắp tới.

Các bài viết liên quan

  • [Đã giải quyết]: Chia sổ làm việc không hiển thị trong Excel (với các bước dễ dàng)
  • Cách gửi Email từ danh sách Excel (2 cách hiệu quả)
  • Cách gửi bảng tính Excel có thể chỉnh sửa qua Email (3 phương pháp nhanh)
  • Macro gửi Email từ Excel (5 ví dụ phù hợp)
  • Macro gửi Email từ Excel có nội dung (3 trường hợp hữu ích)
  • Excel Macro: Gửi Email đến địa chỉ trong ô (2 cách dễ dàng)