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

Làm thế nào để gửi email nếu ngày đến hạn đã được đáp ứng trong Excel?

Như được hiển thị trong ảnh chụp màn hình bên dưới, nếu ngày đến hạn trong cột C nhỏ hơn hoặc bằng 7 ngày (ví dụ: ngày hiện tại là 2017/9/13), một email sẽ được gửi đến người nhận được chỉ định trong cột A và nội dung được chỉ định trong cột B không được hiển thị trong phần nội dung của email. Bạn có thể làm như thế nào để đạt được nó? Bài viết này cung cấp mã VBA để giúp bạn thực hiện tác vụ này.

Gửi email nếu ngày đến hạn đã được đáp ứng với mã VBA


Gửi email nếu ngày đến hạn đã được đáp ứng với mã VBA

Vui lòng làm như sau để gửi email nhắc nhở nếu ngày đến hạn đã được đáp ứng trong Excel.

1. Nhấn nút Khác + F11 các phím đồng thời để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, vui lòng nhấp vào Chèn > Mô-đun. Sau đó sao chép và dán mã VBA bên dưới vào cửa sổ Mô-đun.

Mã VBA: Gửi email nếu ngày đến hạn bị đóng trong Excel

Public Sub CheckAndSendMail()
'Updated by Extendoffice 2018/11/22
    Dim xRgDate As Range
    Dim xRgSend As Range
    Dim xRgText As Range
    Dim xRgDone As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xLastRow As Long
    Dim vbCrLf As String
    Dim xMailBody As String
    Dim xRgDateVal As String
    Dim xRgSendVal As String
    Dim xMailSubject As String
    Dim i As Long
    On Error Resume Next
    Set xRgDate = Application.InputBox("Please select the due date column:", "KuTools For Excel", , , , , , 8)
    If xRgDate Is Nothing Then Exit Sub
    Set xRgSend = Application.InputBox("Please select the recipients?email column:", "KuTools For Excel", , , , , , 8)
    If xRgSend Is Nothing Then Exit Sub
    Set xRgText = Application.InputBox("Select the column with reminded content in your email:", "KuTools For Excel", , , , , , 8)
    If xRgText Is Nothing Then Exit Sub
    xLastRow = xRgDate.Rows.count
    Set xRgDate = xRgDate(1)
    Set xRgSend = xRgSend(1)
    Set xRgText = xRgText(1)
    Set xOutApp = CreateObject("Outlook.Application")
    For i = 1 To xLastRow
        xRgDateVal = ""
        xRgDateVal = xRgDate.Offset(i - 1).Value
        If xRgDateVal <> "" Then
        If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
            xRgSendVal = xRgSend.Offset(i - 1).Value
            xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
            vbCrLf = "<br><br>"
            xMailBody = "<HTML><BODY>"
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Text : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & "</BODY></HTML>"
            Set xMailItem = xOutApp.CreateItem(0)
            With xMailItem
                .Subject = xMailSubject
                .To = xRgSendVal
                .HTMLBody = xMailBody
                .Display
                '.Send
            End With
            Set xMailItem = Nothing
        End If
    End If
    Next
    Set xOutApp = Nothing
End Sub

Chú ý: Dòng Nếu CDate (xRgDateVal) - Ngày <= 7CDate (xRgDateVal) - Ngày> 0 Thì trong mã VBA có nghĩa là ngày đến hạn phải lớn hơn 1 ngày và nhỏ hơn hoặc bằng 7 ngày. Bạn có thể thay đổi nó khi bạn cần.

3. nhấn các Phím F5 để chạy mã. Trong lần xuất hiện đầu tiên Kutools cho Excel hộp thoại, vui lòng chọn phạm vi cột ngày đến hạn và sau đó nhấp vào OK cái nút. Xem ảnh chụp màn hình:

4. Sau đó, thứ hai Kutools cho Excel hộp thoại bật lên, vui lòng chọn phạm vi cột tương ứng chứa địa chỉ email của người nhận và nhấp vào OK cái nút. Xem ảnh chụp màn hình:

5. Cuối cùng Kutools cho Excel hộp thoại, chọn nội dung bạn muốn hiển thị trong nội dung email, sau đó bấm vào OK .

Sau đó, một email sẽ được tạo tự động với người nhận, chủ đề và nội dung được chỉ định được liệt kê ra nếu ngày đến hạn trong cột C nhỏ hơn hoặc bằng 7 ngày. Vui lòng nhấp vào Gửi để gửi email.

Chú ý:

1. Mỗi email được tạo tương ứng với một ngày đến hạn. Ví dụ: nếu có ba ngày đến hạn đáp ứng tiêu chí, ba thư email sẽ được tạo tự động.

2. Mã này sẽ không được kích hoạt nếu không có ngày nào đáp ứng tiêu chí.

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


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 ...
  • Thanh siêu công thức (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-2021 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 đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại 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 (124)
Xếp hạng 4.5 trong 5 · xếp hạng 1
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn đã chia sẻ.


Bạn sẽ thêm đầu vào Cc hoặc nhiều người nhận như thế 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
Xin chào Brandon,

Xin lỗi vì đã bình luận về bài đăng của bạn mà không có câu trả lời nhưng bạn có thể lấy mã VBA để gửi email 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
Tôi đã sử dụng mã VBA của bạn để gửi email dựa trên giá trị ô nhưng nó không hoạt động.
Mọi thứ cho đến bước 5 đều hoạt động nhưng không có email nào được gửi đi. Bất cứ ai có thể giúp tôi với điều 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
Tôi viene muy bien gracias por el aporte, solo me falta como puedo hacerlo automaticamente sin necesidad de hacerlo manualmente el envio del Correo.
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ày đóng băng chương trình excel của tôi khi tôi chạy nó. Nó có thâm dụng bộ nhớ 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
Hi Robert,
Vấn đề bạn đề cập không xuất hiện trong trường hợp của tôi. Tôi có thể có phiên bản Office của bạn 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
chúng ta có thể chỉ nhập các chi tiết một lần và các email có thể được gửi tự động, thay vì luôn cần phải chọn các cột 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
Chào Diyaa,
Nếu bạn không muốn chọn các cột theo cách thủ công, vui lòng áp dụng mã VBA bên dưới.
Lưu ý: Bạn chỉ cần chọn cột ngày đến hạn sau khi áp dụng mã.

Public Sub CheckAndSendMail ()
'Cập nhật Extendoffice 2017 / 9 / 14
Dim xrgdate là phạm vi
Dim xrgsend dưới dạng phạm vi
Dim xRgText dưới dạng phạm vi
Dim xRgDone As Range
Dim xOutApp làm đối tượng
Làm mờ xMailItem làm đối tượng
Dim xLastRow miễn là dài
Làm mờ vbCrLf dưới dạng chuỗi
Dim xMailBody dưới dạng chuỗi
Làm mờ xRgDateVal thành chuỗi
Dim xRgSendVal dưới dạng chuỗi
Dim xMailSubject dưới dạng chuỗi
Dim I As Long
On Error Resume Next
Đặt xRgDate = Application.InputBox ("Vui lòng chọn cột ngày đến hạn:", "KuTools For Excel",,,,,, 8)
Nếu xRgDate không có gì thì thoát Sub
xLastRow = xRgDate.Rows.Count
Đặt xRgDate = xRgDate (1)
Đặt xRgSend = xRgSend (1)
Đặt xRgText = xRgText (1)
Đặt xOutApp = CreateObject ("Outlook.Application")
Đối với I = 1 Đến xLastRow
xRgDateVal = xRgDate.Offset (I - 1) .Value
Nếu CDate (xRgDateVal) - Ngày <= 7 Và CDate (xRgDateVal) - Ngày> 0 Thì
xRgSendVal = xRgSend.Offset (I - 1) .Value
xMailSubject = xRgText.Offset (I - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
"Đây là dòng 2"
Đặt xMailItem = xOutApp.CreateItem (0)
Với xMailItem
.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
Đặt xMailItem = Không có gì
Cuối Nếu
Sau
Đặ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 bạn,
Tôi cũng là một người mới bắt đầu và tôi muốn hỏi một câu hỏi khác cho Sub tuyệt vời của bạn.

Làm cách nào để chỉ gửi email nếu một địa chỉ mail nhất định nằm trong ô liên quan?

Tôi cần điều này, bởi vì trong công cụ excel của tôi, tôi đã triển khai một số nút cho từng người, những người cần được nhắc nhở.

Cảm ơn bạn rất nhiều trước!!

Thomas
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hi Thomas,
Chúng tôi đã đăng một bài viết "Làm thế nào để gửi email đến các địa chỉ email được chỉ định trong các ô trong Excel?"
https://www.extendoffice.com/documents/excel/4717-excel-macro-send-email-to-address-in-cells.html
Có lẽ bạn có thể tìm thấy giải pháp của mình trong bài viết 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
Tôi cần điều này để hoạt động trên tất cả các trang tính trong sổ làm việc. Ngày trong tương lai sẽ được nhập theo cách thủ công vào cùng một ô trên mỗi trang tính và các trang tính mới được tạo hàng ngày. Tôi cũng cần tên trang tính trong email để tôi biết trang nào đến hạ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 không thể giúp bạn với điều này.
Chào mừng bạn đăng bất kỳ câu hỏi nào về Excel lên diễn đàn của chúng tôi: https://www.extendoffice.com/forum.html. Bạn sẽ nhận được nhiều hỗ trợ Excel hơn từ chuyên gia của chúng tôi hoặc những người hâm mộ Excel khác.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Không làm cho nó hoạt động. Sử dụng Office 365 để Outlook và Excel phải đủ chặt chẽ. Giống như trong bài đăng từ "schou" 4 tháng trước, nó hoạt động đến bước 5 nhưng sau đó không có gì.
Một giải pháp cho điều 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
Tôi có excel để gửi email, nhưng tôi có thể thiết lập điều này để nó gửi email mỗi khi tôi mở excel thay vì chọn các cột mỗi lần.

Tôi có một sổ làm việc với 24 trang vì vậy tôi đang tìm cách tự động gửi email khi sổ làm việc được mở lên.


Rất 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,
Ý của bạn là kiểm tra ngày đến hạn tự động trên sổ làm việc và gửi email khi sổ làm việc được mở ra?
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 các cậu,


Macro rất tuyệt nhưng tôi muốn hỏi một điều - nếu bạn có ai đó trong danh sách mà không có ngày tháng làm thế nào để sửa đổi mã vba để loại trừ người đó? Bây giờ mã tạo ra các e-mail ngay cả cho những người không có ngày thá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 Lvan,
Mã đã được cập nhật để giải quyết vấn đề, vui lòng thử. 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
Xin chào, Thư đang tự động tạo cho các cột có dữ liệu trống. Tôi cũng vậy, muốn có mã được cập nhật.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn rất nhiều vì sự đóng góp. Tôi muốn biết cách sử dụng lựa chọn cột cố định mà không cần phải sử dụng kutools? nghĩa là, để lại các cột ngày tháng, biên nhận và cảnh báo mặ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
Good day,
Mã VBA dưới đây có thể giúp bạn. Xin vui lòng có một thử.

Public Sub CheckAndSendMail ()
'Cập nhật Extendoffice 2018 / 11 / 22
Dim xrgdate là phạm vi
Dim xrgsend dưới dạng phạm vi
Dim xRgText dưới dạng phạm vi
Dim xRgDone As Range
Dim xOutApp làm đối tượng
Làm mờ xMailItem làm đối tượng
Dim xLastRow miễn là dài
Làm mờ vbCrLf dưới dạng chuỗi
Dim xMailBody dưới dạng chuỗi
Làm mờ xRgDateVal thành chuỗi
Dim xRgSendVal dưới dạng chuỗi
Dim xMailSubject dưới dạng chuỗi
Dim i As Long
On Error Resume Next
Đặt xRgDate = Range ("C2: C4") 'Vui lòng tham khảo cột ngày đến hạn
Nếu xRgDate không có gì thì thoát Sub
Đặt xRgSend = Range ("A2: A4") 'Vui lòng tham chiếu cột email người nhận?
If xRgSend Is Nothing then Exit Sub
Đặt xRgText = Range ("B2: B4") Nhập cột có nội dung được nhắc nhở trong email của bạn
Nếu xRgText là không có gì thì thoát phụ
xLastRow = xRgDate.Rows.count
Đặt xRgDate = xRgDate (1)
Đặt xRgSend = xRgSend (1)
Đặt xRgText = xRgText (1)
Đặt xOutApp = CreateObject ("Outlook.Application")
Đối với i = 1 Đến xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset (i - 1) .Value
Nếu xRgDateVal <> "" Thì
Nếu CDate (xRgDateVal) - Ngày <= 7 Và CDate (xRgDateVal) - Ngày> 0 Thì
xRgSendVal = xRgSend.Offset (i - 1) .Value
xMailSubject = xRgText.Offset (i - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "Dear" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Text:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
Đặt xMailItem = xOutApp.CreateItem (0)
Với xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.HTMLBody = xMailBody
.Trưng bày
'.Gửi
Kết thúc với
Đặt xMailItem = Không có gì
Cuối Nếu
Cuối Nếu
Sau
Đặ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
Crytal thân mến,

Cảm ơn những chia sẻ của bạn.

Tôi là người mới bắt đầu và tôi gặp vấn đề với mã.

xMailBody = ""
xMailBody = xMailBody & "Dear" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Text:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""

Văn bản không được chuyển sang dòng mới.
Bạn có thể giúp.

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
Ni niti,
Bạn cần thêm dòng vbCrLf = " "trước cái lạnh.
Nhu la:
vbCrLf = " "
xMailBody = ""
xMailBody = xMailBody & "Dear" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Text:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Kính gửi Crystal, Trong khi chọn cột ngày tháng, Có thể chọn nhiều ô trong các cột khác nhau 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
Chào bạn,
Anh Crystal, trong cuộc trò chuyện cuối cùng của anh với anh Ivan, anh ấy đã yêu cầu anh cung cấp mã để gửi e-mail mỗi khi mở bảng tính thay vì nhập mã mỗi lần.
Tôi cần cùng một mã, cùng một hoàn cảnh, bạn có thể giúp đỡ được 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
Đúng ra, đó không phải là với ông Ivan, mà là với ông Austin.
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, tôi đang sử dụng phiên bản sửa đổi của mã này và tôi còn khá mới đối với VBA. Tôi tò mò liệu có khả năng khi email được gửi đi, macro sẽ có thể đánh dấu X hoặc nếu ai đó đã Hoàn thành, thì email sẽ không được gửi đi. Tôi hy vọng tất cả điều này có ý nghĩa. Bất kỳ sự giúp đỡ nào cũng được đánh giá rất cao.

Thông tin cơ bản ít ỏi, tôi đang sử dụng công cụ này để chạy kiểm tra ngày đến hạn ở 30 ngày, 60 ngày và quá hạn. Tôi muốn 1 email gửi đi sau 30 ngày, 1 email sau 60 ngày và sau đó quá hạn. Tôi đang chạy nó từ tập lệnh VB mà tôi đã viết, để tôi có thể tự động hóa nó hàng ngày. Thanks!
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 sử dụng phiên bản sửa đổi của mã này và tôi còn khá mới đối với VBA. Tôi tò mò liệu có khả năng khi email được gửi đi, macro sẽ có thể đánh dấu X hoặc nếu ai đó đã Hoàn thành, thì email sẽ không được gửi đi. Tôi hy vọng tất cả điều này có ý nghĩa. Bất kỳ sự giúp đỡ nào cũng được đánh giá rất cao. Thông tin cơ bản ít ỏi, tôi đang sử dụng công cụ này để chạy kiểm tra ngày đến hạn ở 30 ngày, 60 ngày và quá hạn. Tôi muốn 1 email gửi đi sau 30 ngày, 1 email sau 60 ngày và sau đó cũng sẽ quá hạn. Tôi đang chạy nó từ tập lệnh VB mà tôi đã viết, để tôi có thể tự động hóa nó hàng ngày. Thanks!
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 Ngài,

Điều này rất hữu ích. Tôi cần thêm 2 cải tiến trong cùng một mã. Tôi phải nhấp vào nút gửi lần nào cũng được, miễn là tôi có 10 email được gửi, nếu tôi gửi> 25 email trong một ngày thì sao. Vì vậy, vui lòng cung cấp cho tôi một mã để gửi e-mail tự động khi chọn Ngày đến hạn, Người nhận, Chủ đề, v.v.

Ngoài ra, vui lòng cung cấp cho tôi mã để thêm tùy chọn "CC"


Cảm ơn

âm thanh P
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,
Vui lòng thử mã VBA dưới đây, hy vọng tôi có thể giúp đỡ. Cảm ơn đã bình luận.

Public Sub CheckAndSendMail ()
'Cập nhật Extendoffice 2018 / 11 / 22
Dim xrgdate là phạm vi
Dim xrgsend dưới dạng phạm vi
Dim xRgText dưới dạng phạm vi
Dim xRgDone As Range
Dim xOutApp làm đối tượng
Làm mờ xMailItem làm đối tượng
Dim xLastRow miễn là dài
Làm mờ vbCrLf dưới dạng chuỗi
Dim xMailBody dưới dạng chuỗi
Làm mờ xRgDateVal thành chuỗi
Dim xRgSendVal dưới dạng chuỗi
Dim xMailSubject dưới dạng chuỗi
Dim i As Long
On Error Resume Next
Đặt xRgDate = Application.InputBox ("Vui lòng chọn cột ngày đến hạn:", "KuTools For Excel",,,,,, 8)
Nếu xRgDate không có gì thì thoát Sub
Đặt xRgSend = Application.InputBox ("Vui lòng chọn cột người nhận? Email:", "KuTools For Excel",,,,,, 8)
If xRgSend Is Nothing then Exit Sub
Đặt xRgCC = Application.InputBox ("Vui lòng chọn cột email người nhận? CC:", "KuTools For Excel",,,,,, 8)
Nếu xRgCC không có gì thì thoát Sub
Đặt xRgText = Application.InputBox ("Chọn cột có nội dung được nhắc nhở trong email của bạn:", "KuTools For Excel",,,,,, 8)
Nếu xRgText là không có gì thì thoát phụ
xLastRow = xRgDate.Rows.Count
Đặt xRgDate = xRgDate (1)
Đặt xRgSend = xRgSend (1)
Đặt xRgCC = xRgCC (1)
Đặt xRgText = xRgText (1)
Đặt xOutApp = CreateObject ("Outlook.Application")
Đối với i = 1 Đến xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset (i - 1) .Value
Nếu xRgDateVal <> "" Thì
Nếu CDate (xRgDateVal) - Ngày <= 7 Và CDate (xRgDateVal) - Ngày> 0 Thì
xRgSendVal = xRgSend.Offset (i - 1) .Value
xRgCCVal = xRgCC.Offset (i - 1) .Value
xMailSubject = xRgText.Offset (i - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "Dear" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Text:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
Đặt xMailItem = xOutApp.CreateItem (0)
Với xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.Cc = xRgCCVal
.HTMLBody = xMailBody
.Gửi
Kết thúc với
Đặt xMailItem = Không có gì
Cuối Nếu
Cuối Nếu
Sau
Đặ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
Xin chào Crystal,

Cảm ơn các mã vì nó rất hữu ích. Nhưng làm thế nào để làm cho mã hoạt động nếu tôi đang sử dụng outlook.office.com?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
trong phần nội dung, tôi muốn giá trị cột a, b, c ở định dạng bảng, chẳng hạn như ngày hết hạn khi đạt đến trong cột nội dung, tôi muốn in chi tiết các ô a, b, c ở định dạng bả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 BS Dinesh,
Xin lỗi không thể giúp bạn với điều đó. Chào mừng bạn đến đăng bất kỳ câu hỏi nào trong diễn đàn của chúng tôi: https://www.extendoffice.com/forum.html.
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 mới sử dụng VBA. Có cách nào để chương trình này tự động chạy bất cứ khi nào tệp được 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 L Echols,
Để tự động chạy mã khi tệp được mở, vui lòng nhấp đúp để mở cửa sổ mã ThisWorkbook (nằm ở phía bên trái của cửa sổ Microsoft Visual Basic for Applications), chọn Workbook từ danh sách thả xuống đầu tiên, sau đó sao chép trên mã VBA (ngoại trừ dòng đầu tiên và dòng cuối cùng) vào cửa sổ mã và dán vào giữa hai dòng đã cho. Xem ảnh chụp màn hình đính kèm bên dưới:
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều này thật tuyệt. Tôi đã tự hỏi liệu có cách nào để chạy mã mà không cần phải chọn các giá trị KuTools mỗi lần không? Để làm rõ, tôi đã nhập mã này và bây giờ bất cứ khi nào tôi mở sổ làm việc, tôi vẫn phải đánh dấu các cột giống nhau. Có cách nào để nhập mã để chạy kiểm tra trên các cột giống nhau mọi lúc - miễn là không có chỉnh sửa nào đối với sổ làm việc - để chạy kiểm tra và lập một email dựa trên kiểm tra đã nói không? Cảm ơn bạ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 Daniel
Vui lòng thử mã dưới đây và thay đổi phạm vi khi bạn cần.

Public Sub CheckAndSendMail ()
'Cập nhật Extendoffice 2019 / 5 / 17
Dim xrgdate là phạm vi
Dim xrgsend dưới dạng phạm vi
Dim xRgText dưới dạng phạm vi
Dim xRgDone As Range
Dim xOutApp làm đối tượng
Làm mờ xMailItem làm đối tượng
Dim xLastRow miễn là dài
Làm mờ vbCrLf dưới dạng chuỗi
Dim xMailBody dưới dạng chuỗi
Làm mờ xRgDateVal thành chuỗi
Dim xRgSendVal dưới dạng chuỗi
Dim xMailSubject dưới dạng chuỗi
Dim i As Long
On Error Resume Next
Đặt xRgDate = Range ("C2: C4")
Nếu xRgDate không có gì thì thoát Sub
Đặt xRgSend = Range ("A2: A4")
If xRgSend Is Nothing then Exit Sub
Đặt xRgText = Range ("B2: B4")
Nếu xRgText là không có gì thì thoát phụ
xLastRow = xRgDate.Rows.Count
Đặt xRgDate = xRgDate (1)
Đặt xRgSend = xRgSend (1)
Đặt xRgText = xRgText (1)
Đặt xOutApp = CreateObject ("Outlook.Application")
Đối với i = 1 Đến xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset (i - 1) .Value
Nếu xRgDateVal <> "" Thì
Nếu CDate (xRgDateVal) - Ngày <= 7 Và CDate (xRgDateVal) - Ngày> 0 Thì
xRgSendVal = xRgSend.Offset (i - 1) .Value
xMailSubject = xRgText.Offset (i - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "Dear" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Text:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
Đặt xMailItem = xOutApp.CreateItem (0)
Với xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.HTMLBody = xMailBody
.Trưng bày
'.Gửi
Kết thúc với
Đặt xMailItem = Không có gì
Cuối Nếu
Cuối Nếu
Sau
Đặ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
Điều này thật tuyệt. Tôi đã tự hỏi liệu có cách nào để chạy mã mà không cần phải chọn các giá trị KuTools mỗi lần không? Để làm rõ, tôi đã nhập mã này và bây giờ bất cứ khi nào tôi mở sổ làm việc, tôi vẫn phải đánh dấu các cột giống nhau. Có cách nào để nhập mã để chạy kiểm tra trên các cột giống nhau mọi lúc - miễn là không có chỉnh sửa nào đối với sổ làm việc - để chạy kiểm tra và lập một email dựa trên kiểm tra đã nói không? Cảm ơn bạ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
Xin chào Crystal,
Tôi đang gặp sự cố với việc tự động gửi email sau khi tệp được mở. Ví dụ, tôi có tất cả thông tin về ngày đến hạn trên Sheet1. Tuy nhiên, nếu tôi lưu và đóng tệp khi tôi đang làm việc trên Sheet2, ngay khi tôi mở tệp, các giá trị để gửi email sẽ dựa trên Sheet2 chứ không phải trên Sheet1. Tôi chỉ có thêm mô-đun trên Sheet1 và ThisWorkbook. Tôi nghĩ rằng việc có cùng một vba trên ThisWorkbook sẽ kích hoạt để gửi email tự động trên bất kỳ trang nào tôi đang mở nó vào lúc này. Làm cách nào để hạn chế VBA lấy giá trị từ trang tính cụ thể và cũng có thể gửi email khi tệp được mở? Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạ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
Tôi mới làm quen với VBA. Có cách nào để tự động chạy chương trình này bất cứ khi nào tệp được 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
Vâng, với


Private Sub Workbook_Open ()
*Nhập mã vào đây*
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 có một câu hỏi,

Nếu tôi muốn chọn một dải ô xác định trước, làm cách nào để tôi có thể sửa đổi mã trong phần này:

xLastRow = xRgDate.Rows.Count
Đặt xRgDate = xRgDate (1)

Toset tự động làm sạch các ô?

Cho tôi biết :)
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,
Nếu bạn không muốn chọn phạm vi theo cách thủ công mỗi khi áp dụng mã, vui lòng sử dụng mã bên dưới.

Public Sub CheckAndSendMail ()
'Cập nhật Extendoffice 2019 / 12 / 10
Dim xrgdate là phạm vi
Dim xrgsend dưới dạng phạm vi
Dim xRgText dưới dạng phạm vi
Dim xRgDone As Range
Dim xOutApp làm đối tượng
Làm mờ xMailItem làm đối tượng
Dim xLastRow miễn là dài
Làm mờ vbCrLf dưới dạng chuỗi
Dim xMailBody dưới dạng chuỗi
Làm mờ xRgDateVal thành chuỗi
Dim xRgSendVal dưới dạng chuỗi
Dim xMailSubject dưới dạng chuỗi
Dim i As Long
On Error Resume Next
Đặt xRgDate = Range ("C2: C4")
Nếu xRgDate không có gì thì thoát Sub
Đặt xRgSend = Range ("A2: A4")
If xRgSend Is Nothing then Exit Sub
Đặt xRgText = Range ("B2: B4")
Nếu xRgText là không có gì thì thoát phụ
xLastRow = xRgDate.Rows.Count
Đặt xRgDate = xRgDate (1)
Đặt xRgSend = xRgSend (1)
Đặt xRgText = xRgText (1)
Đặt xOutApp = CreateObject ("Outlook.Application")
Đối với i = 1 Đến xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset (i - 1) .Value
Nếu xRgDateVal <> "" Thì
Nếu CDate (xRgDateVal) - Ngày <= 7 Và CDate (xRgDateVal) - Ngày> 0 Thì
xRgSendVal = xRgSend.Offset (i - 1) .Value
xMailSubject = xRgText.Offset (i - 1) .Value & "on" & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & "Dear" & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Text:" & xRgText.Offset (i - 1) .Value & vbCrLf
xMailBody = xMailBody & ""
Đặt xMailItem = xOutApp.CreateItem (0)
Với xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.HTMLBody = xMailBody
.Trưng bày
'.Gửi
Kết thúc với
Đặt xMailItem = Không có gì
Cuối Nếu
Cuối Nếu
Sau
Đặ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
Buenos días! ¿Que modificación tensría que realizar para dejar seleccionadas las celdas con la Información de fecha, texto y Correo y no tener que seleccionarlas cada vez que se activa la macro?

también me gustaría saber como Introductionir un CC, es decir, poder poner a otra persona en copia del Correo. Gracias!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hola! Pudiste solucionar esto? Estoy necesitando lo mismo .. gracias!
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

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL