Tự động gửi email cho phép chúng tôi thiết kế thông điệp phù hợp với tất cả và gửi chúng đến người dùng. Bằng cách tạo và gửi email tự động, chúng tôi có thể tiết kiệm thời gian. Vì nó cho phép bạn gửi email vào những thời điểm cụ thể, nên tự động hóa email là một cách tiếp cận tuyệt vời để thu hút người tiêu dùng tiềm năng. Khả năng gửi thông báo qua email đến đúng người vào đúng thời điểm là tính năng có giá trị nhất của tự động hóa email. Trong bài viết này, chúng tôi sẽ trình bày các Macro VBA khác nhau của excel tự động gửi email khi điều kiện được đáp ứng.
Bạn có thể tải xuống sổ làm việc và thực hành với chúng.
3 phương pháp để tự động gửi email khi có điều kiện trong Excel
Bất cứ khi nào một điều kiện được đáp ứng, chúng tôi thường xuyên phải gửi email cho khách hàng của mình. Sử dụng macro VBA , chúng tôi có thể tùy chỉnh chức năng gửi thư của mình. Do đó, chúng tôi có thể gửi email đến nhiều người cùng lúc bằng VBA kĩ thuật. Để gửi email tự động bằng macro, chúng ta phải có Outlook được cài đặt sẵn trên máy tính của chúng tôi. Vì vậy, mã chúng tôi sẽ đặt sẽ gửi email đến người nhận bằng Outlook .
1. Excel VBA Macro để gửi email tự động dựa trên giá trị ô
Chúng tôi sẽ sử dụng một macro VBA excel để tự động gửi email dựa trên một giá trị cột nhất định trong tập dữ liệu của chúng tôi. Tập dữ liệu dưới đây sẽ được sử dụng để minh họa ví dụ này. Nếu giá trị ô trong ô D5 lớn hơn 10 , chúng tôi sẽ phát triển một chức năng gửi email tự động.
Giả sử, chúng ta có tập dữ liệu sau đây về một số thông tin chi tiết về khách hàng của một siêu cửa hàng. Tập dữ liệu chứa tên của một số khách hàng trong cột B , địa chỉ email của họ trong cột C và một số khoản phí cho việc mua sản phẩm của họ trong cột D . Bây giờ, chúng tôi muốn gửi email cho họ để yêu cầu thanh toán các hóa đơn đến hạn, nhưng ở đây chúng tôi có một điều kiện mà chúng tôi tuân theo:nếu hóa đơn của khách hàng lớn hơn 10 chỉ sau đó chúng tôi sẽ gửi email cho họ. Vì vậy, hãy xem các quy trình để gửi email tự động dựa trên giá trị ô khi điều kiện được đáp ứng.
CÁC BƯỚC:
- Trước tiên, hãy chuyển đến Nhà phát triển từ dải băng.
- Thứ hai, từ Mã danh mục, nhấp vào Visual Basic để mở Visual Basic Editor . Hoặc nhấn Alt + F11 để mở Visual Basic Editor .
- Thay vì làm điều này, bạn có thể chỉ cần nhấp chuột phải vào trang tính của mình và đi tới Xem mã . Thao tác này cũng sẽ đưa bạn đến Visual Basic Editor .
- Điều này sẽ xuất hiện trong Visual Basic Editor nơi chúng tôi viết mã của mình để tạo bảng từ phạm vi.
- Và sao chép và dán VBA mã hiển thị bên dưới.
Mã 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
- Sau đó, chạy mã bằng cách nhấp vào RubSub hoặc nhấn phím tắt F5 .
- Sau đó, một Macro hộp thoại sẽ hiển thị. Nhấp vào Macro bên phải sau đó, nhấn nút Chạy nút.
- Bây giờ, nếu bạn truy cập Outlook của mình ứng dụng và kiểm tra hộp thư đến, chúng tôi sẽ tìm thấy thư bạn vừa gửi qua VBA Macro từ Excel.
Giải thích mã 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
Chúng tôi sẽ sử dụng Sub riêng tư cho điều này. Bởi vì chúng tôi sẽ không sử dụng Macro cửa sổ để chạy mã này. Khi giá trị của một ô thay đổi, mã này sẽ tự động thực thi. Chúng tôi sử dụng Sub riêng tư với Thay đổi trang tính biến cố. Sau đó, giảm số lượng ô xuống một, là D5 . Sau đó, hãy xem nó có lớn hơn 10 không . Cuối cùng, nếu điều kiện được đáp ứng, Send_Email_Automatically1 Thủ tục phụ sẽ chạy.
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
Ở đây, chúng tôi sử dụng Send_Email_Automatically1 Thủ tục phụ . Sau đó, chúng ta khai báo các kiểu biến. Chúng tôi sử dụng Outlook với tư cách là ứng dụng email của chúng tôi. Sau đó, chúng tôi nhập nội dung email vào mã của chúng tôi; str đang hiển thị nội dung email và sau đó chúng tôi muốn gửi email đến giá trị ô C5 , nơi lưu trữ email của khách hàng, chúng tôi đặt chủ đề trên ‘ .Subject '. Sau đó, ‘ .Send 'Được sử dụng để gửi email của chúng tôi.
Đọc thêm: Tự động gửi email từ Excel dựa trên nội dung ô (2 phương pháp)
2. Gửi email tự động dựa trên ngày đến hạn sử dụng mã VBA
Trong phương pháp này, chúng tôi sẽ sử dụng macro VBA trong Excel để tự động gửi email khi ngày đến hạn của hóa đơn đến gần. Điều này phục vụ như một loại nhắc nhở. Để chứng minh điều này, chúng tôi sẽ sử dụng tập dữ liệu dưới đây. Và tập dữ liệu chứa một số tên khách hàng trong cột B , địa chỉ email của họ trong cột C , thông điệp chúng tôi muốn gửi trong cột D và thời hạn thanh toán đến hạn trong cột E . Vì vậy, hãy xem xét các bước để tự động gửi email tùy thuộc vào ngày thỏa mãn một điều kiện.
CÁC BƯỚC:
- Đầu tiên, hãy chuyển đến Develope tab r từ ruy-băng.
- Thứ hai, nhấp vào Visual Basic để mở Visual Basic Editor .
- Một cách khác để mở Visual Basic Editor chỉ cần nhấn Alt + F11 .
- Hoặc, nhấp chuột phải vào trang tính, sau đó chọn Xem mã .
- Và, điều này sẽ mở ra cửa sổ cơ bản trực quan.
- Sau đó, sao chép và dán mã VBA bên dưới.
Mã 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
- Hơn nữa, nhấn phím F5 hoặc nhấp vào nút Chạy phụ để chạy mã.
- Bây giờ, hãy chọn phạm vi cột thời hạn và nhấp vào OK .
- Tương tự, chọn phạm vi cột email và nhấn OK để tiếp tục.
- Sau đó, chọn phạm vi cột thông báo và nhấp vào OK .
- Và, thế là xong. Các tin nhắn bây giờ đã được gửi đến địa chỉ email. Bạn có thể kiểm tra Outlook của mình hộp thư đến để đảm bảo điều đó.
Giải thích mã 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")
Ở đây, chúng tôi lại sử dụng Sub riêng tư , Send_Email_Automatically2 là tên của Sub của chúng tôi . Quy trình . Chúng tôi khai báo các loại biến. Sau đó, chúng tôi sử dụng InputBox để cung cấp phạm vi giá trị. Sau đó, chúng tôi chọn Outlook với tư cách là ứng dụng thư của chúng tôi.
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
Sau đó, chúng tôi sử dụng VBA CDate chức năng để xem liệu một ngày có nằm trong vòng bảy ngày kể từ ngày hiện tại hay không. Sau đó, trong mã của chúng tôi, hãy đặt nội dung email. Cuối cùng, chúng tôi sử dụng ‘ .Send 'Để gửi email của chúng tôi.
Đọc thêm: Cách tự động gửi email từ Excel dựa trên ngày
Bài đọc tương tự
- Cách Xem Ai là Trong Tệp Excel Được Chia sẻ (Với các Bước Nhanh)
- Cách Bật Chia sẻ Sổ làm việc trong Excel
- Gửi Email Nhắc nhở Tự động từ Trang tính Excel Sử dụng VBA
- Cách gửi hàng loạt email từ Outlook bằng Excel (3 cách)
- Cách Áp dụng Macro để Gửi Email từ Excel với Phần đính kèm
3. Tự động gửi email bằng Excel VBA khi đáp ứng nhiều điều kiện
Trong phương pháp này, một lần nữa chúng tôi sẽ sử dụng VBA Macro để gửi một email, nhưng trong thời gian này khi nhiều điều kiện sẽ được thỏa mãn thì các tin nhắn sẽ được gửi đến khách hàng. Vì vậy, hãy xem xét các quy trình gửi email tự động.
CÁC BƯỚC:
- Để bắt đầu, hãy nhấp vào Nhà phát triển trên dải băng.
- Thứ hai, khởi chạy Visual Basic Editor bằng cách nhấp vào Visual Basic .
- Ngoài ra, bạn có thể truy cập Visual Basic Editor bằng cách nhấn Alt + F11 .
- Hoặc nhấp chuột phải trên trang tính và chọn Xem mã từ menu.
- Và cửa sổ cơ bản trực quan sẽ xuất hiện.
- Viết mã ở đó.
Mã 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
- Cuối cùng, nhấn phím F5 để chạy mã.
- A Macro hộp thoại sẽ xuất hiện sau đó. Sau đó, chọn Macro thích hợp và nhấn nút Chạy nút.
- Tương tự như vậy, trong các phương pháp trước đó, nếu bạn mở Outlook và xem trong hộp thư của mình, bạn sẽ thấy email mà bạn vừa gửi qua VBA Macro từ Excel.
Giải thích mã 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)
Ở đây, chúng tôi sử dụng hai thủ tục khác nhau. Gửi_Email_Automatically3 là tên của Thủ tục phụ đầu tiên của chúng tôi . Chúng tôi đặt ‘ Nhiều điều kiện 'Như trang tính của chúng tôi và khai báo Biến các loại. Sau đó, chúng tôi khám phá số hàng cuối cùng. Hơn nữa, vì giá trị của chúng tôi bắt đầu trên hàng 5 , chúng tôi đã di chuyển hàng 5 vào cuối mã của chúng tôi.
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
Sau đó, chúng tôi gọi là Multiple_Conditions , Thủ tục phụ thứ hai của chúng tôi . Chúng tôi chọn Outlook với tư cách là khách hàng thư của chúng tôi. Sau đó, trong mã của chúng tôi, hãy đặt nội dung email. Sử dụng Tệp đính kèm kỹ thuật, chúng tôi đang thêm tệp Excel vào email. Sau đó, chúng tôi sử dụng email của mình để gửi với ‘ .Send '.
Đọc thêm: Cách gửi email nếu điều kiện đáp ứng trong Excel (3 phương pháp dễ dàng)
Kết luận
Các phương pháp trên sẽ hỗ trợ bạn Gửi email tự động khi điều kiện được đáp ứng trong Excel . Hy vọng điều này sẽ giúp bạn! Nếu bạn có bất kỳ câu hỏi, đề xuất hoặc phản hồi nào, vui lòng cho chúng tôi biết trong phần bình luận. Hoặc bạn có thể xem qua các bài viết khác của chúng tôi trong ExcelDemy.com blog!
Các bài viết có liên quan
- Cách Gửi Email Tự động từ Excel sang Outlook (4 Phương pháp)
- Cách Gửi Email từ Excel với Nội dung Sử dụng Macro (với các Bước Dễ dàng)
- Excel Macro:Gửi Email đến Địa chỉ trong Ô (2 Cách Dễ dàng)
- Cách Gửi Nhiều Email từ Bảng tính Excel (2 Phương pháp Dễ dàng)
- Macro để Gửi Email từ Excel với Nội dung (3 Trường hợp Hữu ích)
- Cách Gửi Bảng tính Excel Có thể Chỉnh sửa qua Email (3 Phương pháp Nhanh)