Note: The other languages of the website are Google-translated. Back to English

Làm cách nào để tự động gửi email dựa trên giá trị ô trong Excel?

Giả sử bạn muốn gửi email qua Outlook đến một người nhận nhất định dựa trên một giá trị ô được chỉ định trong Excel. Ví dụ: khi giá trị của ô D7 trong trang tính lớn hơn 200, thì một email sẽ được tạo tự động. Bài viết này giới thiệu một phương pháp VBA để bạn nhanh chóng giải quyết vấn đề này.

Tự động gửi email dựa trên giá trị ô với mã VBA


Tự động gửi email dựa trên giá trị ô với mã VBA

Vui lòng làm như sau để gửi email dựa trên giá trị ô trong Excel.

1. Trong trang tính, bạn cần gửi email dựa trên giá trị ô của nó (ở đây nói là ô D7), nhấp chuột phải vào tab trang tính và chọn Mã Chế độ xem từ menu ngữ cảnh. Xem ảnh chụp màn hình:

2. Trong cửa sổ bật lên Microsoft Visual Basic cho các ứng dụng cửa sổ, vui lòng sao chép và dán mã VBA bên dưới vào cửa sổ mã trang tính.

Mã VBA: Gửi email qua Outlook dựa trên giá trị ô trong Excel

Dim xRg As Range
'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D7"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 200 Then
        Call Mail_small_Text_Outlook
    End If
End Sub
Sub Mail_small_Text_Outlook()
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "send by cell value test"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Chú ý:

1). Trong mã VBA, D7giá trị> 200 là ô và giá trị ô mà bạn sẽ gửi email dựa trên.
2). Vui lòng thay đổi nội dung email khi bạn cần xMailBody dòng trong mã.
3). Thay thế Địa chỉ email bằng địa chỉ email người nhận trong dòng .To = "Địa chỉ Email".
4). Và chỉ định người nhận Cc và Bcc khi bạn cần .CC = “”Bcc = “” phần.
5). Cuối cùng thay đổi chủ đề email trong dòng .Subject = "gửi bằng kiểm tra giá trị ô".

3. Nhấn nút Khác + Q các phím với nhau để đóng Microsoft Visual Basic cho các ứng dụng cửa sổ.

Từ bây giờ, khi giá trị bạn nhập vào ô D7 lớn hơn 200, một email có người nhận và nội dung được chỉ định sẽ được tạo tự động trong Outlook. Bạn có thể nhấp vào Gửi để gửi email này. Xem ảnh chụp màn hình:

Chú ý:

1. Mã VBA chỉ hoạt động khi bạn sử dụng Outlook làm chương trình email của mình.

2. Nếu dữ liệu đã nhập trong ô D7 là giá trị văn bản, cửa sổ email cũng sẽ hiện ra.


Dễ dàng gửi email qua Outlook dựa trên các trường của danh sách gửi thư đã tạo trong Excel:

Mô hình Gửi email tiện ích của Kutools cho Excel giúp người dùng gửi email qua Outlook dựa trên danh sách gửi thư đã tạo trong Excel.
Tải xuống và thử ngay bây giờ! (Đường mòn miễn phí 30 ngày)


Các bài liên quan:


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Super Formula Bar (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2019 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ các tính năng dùng thử miễn phí 30 ngày. Đảm bảo hoàn tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (290)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã nên được sửa đổi như thế nào, để áp dụng cho toàn bộ phạm vi ô?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Debbie thân mến,
Vui lòng thử mã VBA bên dưới để giải quyết vấn đề.

Private Sub Worksheet_Change (ByVal Target As Range)
If Target.Cells.Count> 1 Then Exit Sub
Nếu (Không Giao nhau (Mục tiêu, Phạm vi ("A1: D4")) Không có gì) Và (Mục tiêu.Value> 200) Thì
Gọi Mail_small_Text_Outlook
Cuối Nếu
End Sub
Sub Mail_small_Text_Outlook ()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
On Error Resume Next
Với xOutMail
.To = "Địa chỉ email người nhận của bạn"
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi gặp sự cố khi nhận mã này để nhắc nếu giá trị trong ô bị thay đổi gián tiếp. Ví dụ: nếu tôi có phương trình Tổng thay đổi giá trị này tự động. Khi phương trình chạy và giá trị vượt quá giá trị đã đặt để nhắc email, nó sẽ không làm như vậy, trừ khi tôi tự thay đổi số. Có cách nào để làm cho email được nhắc ngay cả khi được thay đổi gián tiếp?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Jordan thân mến,
Mã VBA sau đây có thể giúp bạn giải quyết vấn đề. Xin đừng quên thay thế "Địa chỉ Email" bằng địa chỉ email của người nhận trong mã. Cảm ơn bạn.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRgPre As Range
On Error Resume Next
If Target.Cells.Count> 1 Then Exit Sub
Đặt xRg = Range ("D7")
Đặt xRgPre = xRg.Precedents
Nếu xRg.Value> 200 Thì
If Target.Address = xRg.Address Thì
Gọi Mail_small_Text_Outlook
ElseIf (Không phải xRgPre là không có gì) Và (Giao nhau (Target, xRgPre) .Address = Target.Address) Sau đó
Gọi Mail_small_Text_Outlook
Cuối Nếu
Cuối Nếu
End Sub
Sub Mail_small_Text_Outlook ()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
On Error Resume Next
Với xOutMail
.To = "Địa chỉ Email"
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã sửa đổi mã đề xuất để cố gắng làm cho nó hoạt động cho ứng dụng của tôi.
Đã thay đổi xRg = Range ("C2: C40") và Nếu xRg.Value = -1.

Vấn đề mà tôi đang gặp phải là bất kỳ lúc nào có sự thay đổi đối với bất kỳ ô nào và miễn là một trong các ô trong phạm vi của tôi là = -1, nó sẽ gọi Mail_small_Text_Outlook.
Tôi đang cố gắng chỉ gọi nếu bất kỳ ô nào trong phạm vi của tôi được thay đổi gián tiếp thành -1.
Tôi cũng đang tự hỏi nếu và làm thế nào nó có thể đáp ứng được hai tiêu chí.
Giống như kiểm tra phạm vi A và phạm vi B và nếu chúng đáp ứng tiêu chí gọi hàm.

Xin được cảm ơn trước về sự giúp đỡ. Tôi là người mới đối với tất cả những điều này nhưng đọc qua chủ đề này, tôi có khoảng 90% ở đó.


Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRgPre As Range
On Error Resume Next
If Target.Cells.Count> 1 Then Exit Sub
Đặt xRg = Range ("C2: C40")
Đặt xRgPre = xRg.Precedents
Nếu xRg.Value = -1 Thì
If Target.Address = xRg.Address Thì
Gọi Mail_small_Text_Outlook
ElseIf (Không phải xRgPre là không có gì) Và (Giao nhau (Target, xRgPre) .Address = Target.Address) Sau đó
Gọi Mail_small_Text_Outlook
Cuối Nếu
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã sử dụng mã này với thay đổi duy nhất là tôi đã áp dụng nó cho toàn bộ cột [Đặt xRg = Phạm vi ("D4: D13")]. Bây giờ sự kiện sẽ kích hoạt bất cứ khi nào một phép tính được thực hiện bất kể van trong Cột D có thấp hơn giá trị mục tiêu hay không. Bất kỳ ý tưởng là tại sao đó là?


Dim Xrg As Range
Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRgPre As Range
On Error Resume Next
If Target.Cells.Count> 1 Then Exit Sub
Đặt Xrg = Range ("D4: D13")
Đặt xRgPre = Xrg.Precedents
Nếu Xrg.Value <1200 Thì
If Target.Address = Xrg.Address Thì
Gọi Mail_small_Text_Outlook
ElseIf (Không phải xRgPre là không có gì) Và (Giao nhau (Target, xRgPre) .Address = Target.Address) Sau đó
Gọi Mail_small_Text_Outlook
Cuối Nếu
Cuối Nếu
End Sub

Sub Mail_small_Text_Outlook ()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & _
"Kiểm tra vba" _
& vbNewLine & _
"Dòng 2."
On Error Resume Next
Với xOutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "Tự động kiểm tra email"
.Body = xMailBody
.Trưng bày
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì

End Sub


Cảm ơn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào

Tôi đang gặp sự cố vì người nhận Email phải được thêm đi thêm lại từng người một. Vui lòng hướng dẫn nếu danh sách người nhận email có thể được thêm vào chức năng này để chức năng sẽ chọn địa chỉ email từ danh sách địa chỉ email được cung cấp hoặc tải lên danh sách và chức năng gửi email, đã được soạn sẵn đến người nhận mong muốn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Henry thân mến,
Mã VBA sau đây có thể giúp bạn giải quyết vấn đề. Vui lòng đặt tập lệnh VBA vào mô-đun trang tính của bạn. Khi giá trị trong ô được chỉ định đáp ứng điều kiện, hộp thoại Kutools cho Excel sẽ bật lên, vui lòng chọn các ô chứa địa chỉ email của người nhận và sau đó nhấp vào nút OK. Sau đó, các email với người nhận được chỉ định đang mở. Vui lòng gửi chúng khi bạn cần.

Private Sub Worksheet_Change (ByVal Target As Range)
If Target.Cells.Count> 1 Then Exit Sub
Đặt xRg = Range ("D7")
Nếu xRg = Target And Target.Value> 200 thì
Gọi Mail_small_Text_Outlook
Cuối Nếu
End Sub
Sub Mail_small_Text_Outlook ()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Dim xRgMsg As Range
Dim xCell As Range
Đặt xRgMsg = Application.InputBox ("Vui lòng chọn ô địa chỉ :", "Kutools cho Excel",,,,, 8)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
On Error Resume Next
Đối với mỗi xCell Trong xRgMsg
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
Với xOutMail
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
xOutApp = Không có gì
xOutMail = Không có gì
Sau
Về lỗi GoTo 0
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
nó sẽ được gửi tự động qua thư mà không có bất kỳ sự gián đoạn thủ công nào
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Brahma thân mến,
Nếu bạn muốn gửi trực tiếp email mà không hiển thị, vui lòng thay thế dòng ".Display" bằng ".Send" trong mã VBA ở trên.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi đã đặt cùng một kịch bản nhưng nó không hoạt động, vui lòng giúp tôi trong phần đầu tiên

Dim xRg As Range

Private Sub Worksheet_Change (ByVal Target As Range)
If Target.Cells.Count> 1 Then Exit Sub
Đặt xRg = Range ("D7")
Nếu xRg = Target And Target.Value = 200 thì
Gọi Mail_small_Text_Outlook
Cuối Nếu

End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Húng quế thân mến,
Có cảnh báo nào khi chạy mã không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, bạn sẽ sửa đổi mã này như thế nào để kiểm tra một nhóm ô có chuỗi "Không khớp" và gửi email nếu có.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Jose thân mến,
Vui lòng thử mã VBA bên dưới. Khi chạy mã, một hộp thoại bật lên, vui lòng chọn phạm vi bạn sẽ kiểm tra chuỗi và nhấp vào nút OK. nếu chuỗi không tồn tại, bạn sẽ nhận được một hộp thoại nhắc. Nếu chuỗi tồn tại trong phạm vi, một email với người nhận, chủ đề và nội dung được chỉ định sẽ hiển thị.

Sub SendEmail ()
Dim I As Long
Dim J As Long
Dim xRg As Range
Dim xArr
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Dim xFlag As Boolean
On Error Resume Next
Đặt xRg = Application.InputBox ("Vui lòng chọn phạm vi", "Kutools cho Excel", Selection.Address,,,,, 8)
Nếu xRg không có gì thì thoát Sub
xArr = xRg.Value
xFlag = Sai
Đối với I = 1 Đến UBound (xArr)
Đối với J = 1 Đến UBound (xArr, 2)
Nếu xArr (I, J) = "Không phù hợp" thì
xFlag = Đúng
Cuối Nếu
Sau
Sau
Nếu xFlag thì
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
Với xOutMail
.To = "Địa chỉ email"
.CC = ""
.BCC = ""
.Subject = "Khớp"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
Khác
MsgBox "Không tìm thấy giá trị phù hợp", vbInformation, "KuTools cho Excel"
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm cách nào tôi có thể thay đổi mã này để gửi điểm của học sinh cho phụ huynh. Trong đó nếu cột A là điểm và Cột B là email mẹ. Tôi muốn điền một email cho mỗi học sinh với điểm F làm điểm.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Frank thân mến,
Mã VBA dưới đây có thể giúp bạn giải quyết vấn đề. Cảm ơn bạn.

Sub Mail_small_Text_Outlook ()
Dim xRg As Range
Dim I As Long
Dim xRows As Long
Dim xVal As String
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
On Error Resume Next
Đặt xRg = Application.InputBox ("Vui lòng chọn cột điểm và cột email (hai cột)", "Kutools cho Excel", Selection.Address,,,, 8)
Nếu xRg không có gì thì thoát Sub
xRows = xRg.Rows.Count
Đặt xRg = xRg (2)
Đối với I = 1 Đến xRows
xVal = xRg.Offset (I, -1) .Text
Nếu xVal = "F" Thì
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là điểm của con bạn" & xRg.Offset (I, -1) .Text
Với xOutMail
.to = xRg.Offset (I, 0) .Text
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
Cuối Nếu
Sau
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã có một danh sách các địa chỉ email trong một tệp excel, làm thế nào tôi có thể sửa đổi mã để tự động chọn địa chỉ email của một người nếu ô D7 của anh ta> 200?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ngày tốt,
Mã VBA sau đây có thể giúp bạn giải quyết vấn đề. Vui lòng đặt tập lệnh VBA vào mô-đun trang tính của bạn. Khi giá trị trong ô được chỉ định đáp ứng điều kiện, hộp thoại Kutools cho Excel sẽ bật lên, vui lòng chọn các ô chứa địa chỉ email của người nhận và sau đó nhấp vào nút OK. Sau đó, các email với người nhận được chỉ định đang mở. Vui lòng gửi chúng khi bạn cần.

Private Sub Worksheet_Change (ByVal Target As Range)
If Target.Cells.Count> 1 Then Exit Sub
Đặt xRg = Range ("D7")
Nếu xRg = Target And Target.Value> 200 thì
Gọi Mail_small_Text_Outlook
Cuối Nếu
End Sub
Sub Mail_small_Text_Outlook ()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Dim xRgMsg As Range
Dim xCell As Range
Đặt xRgMsg = Application.InputBox ("Vui lòng chọn ô địa chỉ :", "Kutools cho Excel",,,,, 8)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
On Error Resume Next
Đối với mỗi xCell Trong xRgMsg
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
Với xOutMail
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
xOutApp = Không có gì
xOutMail = Không có gì
Sau
Về lỗi GoTo 0
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đang gặp sự cố khi gửi thư qua outlook. Tôi nhận được thông báo lỗi "Một chương trình đang cố gắng gửi email thay mặt bạn. Nếu không mong muốn, vui lòng từ chối và xác minh rằng phần mềm chống vi-rút của bạn đã được cập nhật"
Vui lòng giúp đỡ vì tôi không thể tự động hóa nó.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin lỗi mayank,
Mã hoạt động tốt trong trường hợp của tôi. Có vẻ như điều gì đó về chức năng "gửi thay mặt" được định cấu hình trong Outlook của bạn. Chờ kiểm tra cho nó.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi sẽ sử dụng mã nào nếu tôi đang cố gắng gửi email cho người quản lý có danh sách trái cây có số lượng> 200 một lần mỗi tháng (dựa trên ví dụ của bạn) hoặc sắp hết hạn (dựa trên ngày)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
good Day
Có thể là phương pháp trong bài viết này "Làm thế nào để gửi email nếu ngày đến hạn đã được đáp ứng trong Excel?" có thể giúp bạn.
Vui lòng theo liên kết này: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm cách nào để tôi có thể chỉnh sửa mã để gửi email dựa trên ngày trong ô. Ví dụ: tôi cần một tài liệu được xem xét 15 tháng một lần và tôi muốn gửi một email sau 12 tháng tới một địa chỉ email thông báo rằng tài liệu cần được xem xét. Bây giờ tôi đã có nó để tự động gửi email bằng cách thay đổi .Display thành .Send và nó hoạt động tốt như đã viết, nhưng tôi cần thay đổi điều gì để sử dụng hàm ngày thay vì một số nguyên ??
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm cách nào bạn có thể thêm Nhiều Phạm vi vào "Đặt xRg = Phạm vi (" D7 ")". Tôi muốn chỉnh sửa nó và thêm Phạm vi ("D7: F7"). Tuy nhiên, tôi gặp lỗi Run Time Error 13, Type Mismatch và nó đang đưa tôi đến If xRg = Target And Target.Value> 2 Then.


Làm thế nào tôi có thể giải quyết vấn đề này?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ngày tốt,
Vui lòng thử mã VBA bên dưới để giải quyết vấn đề.

Private Sub Worksheet_Change (ByVal Target As Range)
If Target.Cells.Count> 1 Then Exit Sub
Nếu (Không phải Giao nhau (Mục tiêu, Phạm vi ("D7: F7")) Không có gì) Và (Mục tiêu.Value> 200) Thì
Gọi Mail_small_Text_Outlook
Cuối Nếu
End Sub
Sub Mail_small_Text_Outlook ()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
On Error Resume Next
Với xOutMail
.To = "Địa chỉ email người nhận của bạn"
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
hoạt động hoàn toàn tốt .. Cảm ơn bạn .. :) :)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nó không hoạt động đối với tôi vì giá trị trong D7 là kết quả của một hình thức. Điều gì sẽ xảy ra nếu ô D7 chứa một công thức, ví dụ: D7 = 2 * 120? Nó vẫn đáp ứng điều kiện nhưng không có gì đang xảy ra. Hãy giúp tôi
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm thế nào để dừng mã chạy tức là không nhắc email khi điều kiện không được đáp ứng?

ngay cả khi D7 <200, tôi vẫn nhận được email nhắc nhở.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ngày tốt,
Mã được cập nhật trong bài đăng với sự cố đã được giải quyết. Cảm ơn bình luận của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hi

Cảm ơn bạn rất nhiều vì đã đăng Mã VBA này và hướng dẫn. Khi tôi tìm thấy nó, tôi cảm thấy như mình đã trúng xổ số. Tuy nhiên, tôi đang gặp khó khăn về một số thứ nên tôi mong các bạn có thể giúp đỡ (tôi mới làm quen với VBA, chỉ có những hiểu biết rất cơ bản).

Tôi đã sao chép mã và thay đổi ô và giá trị ô để chọn từ một phạm vi nếu một tiêu chí được đáp ứng. Tôi đã thử và kiểm tra và nó hoạt động và tôi đã nhận được một email để xem xét dựa trên các tiêu chí.

1) Tuy nhiên, tôi dường như không thể tìm ra cách để mã VBA chạy tự động khi tôi mở trang tính excel, thay vì phải nhấp vào ứng dụng VBA và chọn chạy. Bạn có thể tư vấn nếu có thêm lời nhắc nhập mã VBA ở trên sẽ thực hiện việc này hay nó phải được thực hiện riêng biệt.

2) Ngoài ra, có một cách để lấy mã VBA để gửi thư cho một người nếu ngày đến hạn là có cho một mặt hàng nhất định như được hiển thị trong ví dụ bên dưới.
cột ẩn email
Họ tên

Thủ tục
Thủ tục số 1 ngày đến hạn có
Thủ tục số. 2 ngày đến hạn không

Tôi sẽ có nhiều người trong bảng tính (đi ngang theo hàng ngang) và 'Có' có thể được đánh dấu cho các quy trình quá hạn khác nhau (được liệt kê theo chiều dọc trong cột A. Có cách nào để tạo mã VBA chạy cho một cái gì đó như thế này không - nếu "Có" cho "Người 1", thì hãy gửi email cho "người 1" kèm theo "thủ tục không #" (hoặc các số) và (các) ngày đến hạn. Có thể liệt kê trong email tất cả các thủ tục và ngày đến hạn tiếp theo của họ.

Tôi sẽ không phiền nếu tôi phải đặt một mã VBA riêng cho từng người miễn là nó gửi một thư gồm tất cả các tài liệu quá hạn cho người đó và các ngày đến hạn.

Hy vọng bạn có thể giúp đỡ
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ann thân mến,
Vui lòng thử mã VBA bên dưới. Cảm ơn bình luận của bạn.

Sub Mail_small_Text_Outlook ()
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim xRows As Long
Dim xCols As Long
Dim xVal As String
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
On Error Resume Next
Đặt xRg = Application.InputBox ("Chọn phạm vi chứa giá trị ô mà bạn sẽ gửi email dựa trên:", "Kutools cho Excel", Selection.Address,,,, 8)
Nếu xRg không có gì thì thoát Sub
xRows = xRg.Rows.Count
xCols = xRg.Columns.Count
Đối với I = 1 Đến xRows
Đặt xCell = xRg (I, xCols)
Nếu xCell.Value = "Có" Thì
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là thông tin của bạn:" & vbNewLine & xCell.Offset (0, -1) .Text & vbNewLine & xCell.Offset (0, -2) .Text
Với xOutMail
.To = xCell.Offset (0, -4) .Text
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
Cuối Nếu
Sau
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Pha lê,

Điều này thay thế mã sau:

Email phụ ()

Dim xRg As Range

Dim xrgeach dưới dạng phạm vi

Làm mờ xEmail_Subject, xEmail_Send_Form, v.v.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chính xác thì chúng ta chèn đoạn mã này vào đâu?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Good day,
Bạn cần đặt mã vào cửa sổ mã của trang tính.
Mở cửa sổ Microsoft Visual Basic for Applications, bấm đúp vào tên trang tính trong ngăn bên trái để mở trình chỉnh sửa mã.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào bạn,


Tôi hiện đang gặp một chút rắc rối khi mã hóa này (mới làm quen với điều này - có thể đã cắn nhiều hơn tôi có thể nhai)


Tôi hiện có một bảng tính với nội dung sau mà tôi cần trợ giúp để tự động hóa và gửi email về lỗi thuộc về tài sản của chúng tôi cho doanh nghiệp của chúng tôi


Tôi hiện cần một mã sẽ sử dụng dữ liệu sau:


1) Địa chỉ và vấn đề (2 ô "chung" đã được hợp nhất qua ((Trong ô D1)) "= = CONCAT (B1," "C1,)"
Địa chỉ trong B1 sẽ luôn giống nhau (nhiều hơn hoặc ít hơn)
Trong khi C1 sẽ luôn thay đổi tùy thuộc vào lỗi tại chỗ nghỉ.


2) Một email sẽ được gửi bởi cùng một địa chỉ email, (tôi có thể sử dụng $ E $ 1 hay tôi phải sử dụng E1 - E1. Chẳng hạn) hay tôi chỉ cần Nhập "TheEmailAdress @ .co.uk" vào dòng mã


3) Nội dung email sẽ được điền theo cách tương tự như điểm 1) ...... ((Trong ô F1)) "= CONCAT (G1," ", H1)
Những điều này sẽ thay đổi liên tục khi họ đại diện cho công ty (G1) và những gì họ đang làm, sửa chữa, báo giá vv (H1)

4) Kích hoạt để gửi email, tôi sẽ là số 7, trang tính được cập nhật hàng ngày (7 ngày trong tuần)
như vậy, tôi cần trình kích hoạt để gửi email vào ngày thứ 7, nhưng không liên tục như ngày 8, 9, 10+ vv. và không phải trước đó như 1-6, đây sẽ là A4: A 100+ (vì chúng tôi không ngừng mở rộng


4) Tôi đã sử dụng các đoạn trích nhỏ từ những người dùng khác đã đề cập về việc sử dụng danh sách cho trình kích hoạt để gửi email, nhưng không chắc là nó đúng 100%, nhưng tôi cần nó để quét mặc dù tất cả Collum A ... . A4: A100
và nếu có 47 ô chỉ chứa "7" thì 47 Email sẽ được gửi


Cảm ơn bạn rất nhiều vì đã đọc và tôi hy vọng bạn có thể giúp đỡ :)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tử đạo thân mến,
Xin lỗi không thể giúp với điều này.
Bạn có thể đăng câu hỏi của mình trong diễn đàn của chúng tôi: https://www.extendoffice.com/forum.html để nhận thêm hỗ trợ Excel từ nhân viên kỹ thuật của chúng tôi.
Cảm ơn bạn đã bình luận của bạn.

Trân trọng,
Pha lê
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,


Điều gì sẽ xảy ra nếu tôi muốn gửi email dựa trên từ "hoàn thành" được thêm vào cột L?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Jesse thân mến,
Mã VBA sau đây có thể giúp bạn giải quyết vấn đề. Cảm ơn bình luận của bạn.

Private Sub Worksheet_Change (ByVal Target As Range)
If Target.Cells.Count> 1 Then Exit Sub
Nếu (Không Giao nhau (Mục tiêu, Phạm vi ("L: L")) Không có gì) Và (Mục tiêu.Value = "đã hoàn thành") Thì
Gọi Mail_small_Text_Outlook
Cuối Nếu
End Sub
Sub Mail_small_Text_Outlook ()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
On Error Resume Next
Với xOutMail
.To = "Địa chỉ email người nhận của bạn"
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Tôi muốn Outlook chỉ xuất hiện khi dữ liệu tôi đã dán vào Phạm vi ("D7: F7") có ít nhất 1 số XNUMX hoặc trống.
Tôi đã xóa dòng 'If Target.Cells.Count> 1 Then Exit Sub' và bây giờ Outlook luôn khởi chạy khi tôi dán bất kỳ nhóm giá trị nào vào các ô D7: F7.

Cứu giúp.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Jan thân mến,
Tập lệnh sau có thể giúp bạn giải quyết vấn đề. Cảm ơn bình luận của bạn.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
On Error Resume Next
If Target.Address = Range ("D7: F7"). Địa chỉ thì
Với Application.WorksheetFunction
Nếu .CountIf (Mục tiêu, "")> 0 Hoặc .CountIf (Mục tiêu, 0)> 0 Thì
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
Với xOutMail
.To = "Địa chỉ Email"
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = "Xin chào"
.Display 'hoặc sử dụng .Send
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
Cuối Nếu
Kết thúc với
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Vì vậy, tôi đã sử dụng chỉnh sửa của bạn để bao gồm một phạm vi ô nhưng (nếu chúng tôi đang sử dụng ví dụ về trang tính) Tôi đã tự hỏi làm thế nào để thêm loại trái cây, Ngày tháng và số lượng vào email HTML từ trang tính nếu chúng phù hợp với tiêu chí có một email được tạo. Vì vậy, nó sẽ nói

"Chào bạn,"

Tên trái cây từ ô "Cần phải đặt lại đơn hàng vì tính đến ngày đặt hàng:" ngày đặt hàng từ ô "chúng tôi có số lượng này:" số lượng từ ô.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Noemi,
Vui lòng thử tập lệnh VBA này.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg As Range
Dim I, J, K As Long
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
On Error Resume Next
If Target.Address = Range ("D7"). Địa chỉ thì
Với Application.WorksheetFunction
Nếu IsNumeric (Target.Value) và Target.Value> 200 thì
Đặt xRg = Application.InputBox ("Vui lòng chọn phạm vi ô bạn sẽ hiển thị trong nội dung thư :", "KuTools cho Excel", Selection.Address,,,, 8)
Nếu xRg không có gì thì thoát Sub
Đối với I = 1 Đến xRg.Rows.Count
Đối với J = 1 Đến xRg.Rows (I) .Columns.Count
Đối với K = 1 Đến xRg.Rows (I) .Columns (J) .Count
xMailBody = xMailBody & "" & xRg.Rows (I) .Columns (J) .Cells (K) .Text
Sau
Sau
xMailBody = xMailBody & vbNewLine
Sau
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
Với xOutMail
.To = "Địa chỉ Email"
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = "Xin chào" & vbNewLine & xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
Về lỗi GoTo 0
Đặt xOutMail = Không có gì
Đặt xOutApp = Không có gì
Cuối Nếu
Kết thúc với
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
chào pha lê
cảm ơn vì mã của bạn, nếu có thể vui lòng gửi mã cho các chi tiết cụ thể bên dưới

nếu chúng tôi có 8 đến 9 màu sử dụng các loại hết hạn khác nhau như ngày hết hạn hộ chiếu, ngày hết hạn giấy phép lái xe, ngày hết hạn đăng ký xe, ngày hết hạn qua cổng, v.v., và cảnh báo qua thư chỉ được gửi cho 5 người nhất định.

giống như bảng ngày của chúng tôi với hơn 300 nhân viên, hết hạn và ngày hết hạn với màu đỏ trong 15 ngày và cảnh báo qua email sẽ được gửi.

Vui lòng làm những việc cần thiết

cảm ơn trước
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào bạn,
Chúng tôi đã đăng một bài viết "Làm thế nào để gửi email nếu ngày đến hạn đã được đáp ứng trong Excel?"
Bạn có thể xem nếu có câu trả lời trong bài viết này. Vui lòng theo liên kết này để mở bài viết: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Cảm ơn bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào- Nếu tôi muốn gửi đến một email từ một danh sách thay vì đặt addy email thực vào mã, điều đó có thể thực hiện được không? cảm ơn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào bạn,
Vui lòng thử mã VBA bên dưới, khi ô được chỉ định đáp ứng điều kiện, một hộp thoại sẽ bật lên, vui lòng chọn ô chứa địa chỉ email bạn sẽ gửi email đến. Hy vọng nó có thể giúp ích. Cảm ơn bạn.

Private Sub Worksheet_Change (ByVal Target As Range)
If Target.Cells.Count> 1 Then Exit Sub
Đặt xRg = Range ("D7")
Nếu xRg = Target And Target.Value> 200 thì
Gọi Mail_small_Text_Outlook
Cuối Nếu
End Sub
Sub Mail_small_Text_Outlook ()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Dim xRgMsg As Range
Dim xCell As Range
Đặt xRgMsg = Application.InputBox ("Vui lòng chọn ô địa chỉ :", "Kutools cho Excel",,,,, 8)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
On Error Resume Next
Đối với mỗi xCell Trong xRgMsg
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
Với xOutMail
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "gửi bằng kiểm tra giá trị ô"
.Body = xMailBody
.Display 'hoặc sử dụng .Send
Kết thúc với
xOutApp = Không có gì
xOutMail = Không có gì
Sau
Về lỗi GoTo 0
End Sub
Không có bình luận nào được đăng ở đây
Tải thêm
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất