Gửi e-mail khi sắp đến ngày đáo hạn (Microsoft Excel)
Domenic có một trang tính hiển thị ngày hết hạn cho các dự án trong cột E.
Anh ấy biết mình có thể sử dụng định dạng có điều kiện để hiển thị khi nào đến ngày đến hạn (khi nó giống với ngày hôm nay), nhưng thứ anh ấy thực sự cần là một e-mail được gửi khi đến ngày đáo hạn. Anh ấy tự hỏi liệu có cách nào để làm điều này trong Excel không.
Trên thực tế, có một cách để làm điều này, miễn là bạn không ngại sử dụng macro. Ngoài ra, bạn sẽ cần gửi e-mail qua Outlook, mà VBA sẽ giao tiếp tốt. (Thật không may, không thể dễ dàng sử dụng VBA để kết nối với các ứng dụng thư khác.)
Ví dụ ở đây là một macro sẽ chạy bất cứ khi nào sổ làm việc của bạn mở ra. Nó tự động kiểm tra từng hàng trong một trang tính, cụ thể là dựa vào hai điều: ngày đến hạn trong cột E và “giá trị cờ” trong cột F. (Giá trị cờ này được đặt bởi macro. Nếu cột F chứa ký tự “S, “thì macro giả định một e-mail đã được gửi trước đó.)
Private Sub Workbook_Open() Dim OutApp As Object Dim OutMail As Object Dim lLastRow As Long Dim lRow As Long Dim sSendTo As String Dim sSendCC As String Dim sSendBCC As String Dim sSubject As String Dim sTemp As String Set OutApp = CreateObject("Outlook.Application") OutApp.Session.Logon ' Change the following as needed sSendTo = "[email protected]" sSendCC = "" sSendBCC = "" sSubject = "Due date reached" lLastRow = Cells(Rows.Count, 3).End(xlUp).Row For lRow = 2 To lLastRow If Cells(lRow, 6) <> "S" Then If Cells(lRow, 5) <= Date Then Set OutMail = OutApp.CreateItem(0) On Error Resume Next With OutMail .To = sSendTo If sSendCC > "" Then .CC = sSendCC If sSendBCC > "" Then .BCC = sSendBCC .Subject = sSubject sTemp = "Hello!" & vbCrLf & vbCrLf sTemp = sTemp & "The due date has been reached " sTemp = sTemp & "for this project:" & vbCrLf & vbCrLf ' Assumes project name is in column B sTemp = sTemp & " " & Cells(lRow,2) sTemp = sTemp & "Please take the appropriate" sTemp = sTemp & "action." & vbCrLf & vbCrLf sTemp = sTemp & "Thank you!" & vbCrLf .Body = sTemp ' Change the following to .Send if you want to ' send the message without reviewing first .Display End With Set OutMail = Nothing Cells(lRow, 6) = "S" Cells(lRow, 7) = "E-mail sent on: " & Now() End If End If Next lRow Set OutApp = Nothing End Sub
Khi macro chạy (một lần nữa, khi sổ làm việc được mở lần đầu tiên), nó sẽ kiểm tra từng hàng trong trang tính để xem có chữ “S” trong cột F.
Nếu không, thì nó sẽ kiểm tra xem ngày trong cột E có bằng với ngày hôm nay hay không. Nếu đúng như vậy, thì mã này sẽ kết hợp một tin nhắn e-mail (mà bạn có thể sửa đổi, theo ý muốn) sẽ được gửi đi. E-mail được hiển thị và bạn có thể nhấp vào nút Gửi sau khi thực hiện bất kỳ thay đổi mong muốn nào.
Tại thời điểm đó, trang tính được cập nhật bằng cách đặt chỉ báo “S” vào cột F và ngày email được gửi vào cột G.
Lưu ý rằng macro giả định rằng tên của dự án nằm trong cột B.
Thông tin này được sử dụng để tập hợp thông điệp sẽ được gửi qua e-mail.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (474) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.