By Jake vào thứ năm, ngày 17 tháng 2022 năm XNUMX
Được đăng trong Excel
Trả lời 1
Lượt thích 0
Lượt xem 5.8K
Bình chọn 0
Vì vậy, tôi đã sử dụng bài báo xuất sắc này Làm cách nào để tự động gửi email dựa trên giá trị ô trong Excel? (extendofficeCom). và loại bỏ các câu trả lời cùng nhau từ các câu trả lời để làm cho điều này hoạt động như tôi cần nhưng phần cuối cùng tôi không thể tìm ra là làm thế nào để sao chép những gì tôi đã làm để chạy cho nhiều ô. Tôi đã cố gắng sao chép / dán và sắp xếp lại mã với các giá trị khác nhau như C4, C5, v.v. nhưng tôi luôn gặp lỗi. Tôi thấy nó hoạt động tốt ở chỗ nếu giá trị trong C3 là <5, nó sẽ gửi email khi sổ làm việc được lưu. Điều tôi cần bây giờ, vì đây là bảng kiểm kê, là kiểm tra nhiều giá trị ô khác ở các giá trị khác nhau. . Ví dụ, nếu chỉ C3 <5 gửi email. Nếu chỉ C4 thì <6 gửi email. Nếu C3 <5, C4 là <6 và C5 <3 thì hãy gửi email. Sẽ thật tuyệt nếu chỉ một email được tạo khi lưu với tất cả các giá trị phù hợp với <tiêu chí. Trong điều kiện thực tế (không phải thuật ngữ mã hóa), bảng tính là nơi để các kỹ thuật viên kiểm tra và xuất các mục từ bộ nhớ. Những gì tôi đang cố gắng làm là có một email tự động được gửi khi ai đó lưu sổ làm việc và mức tồn kho của một mặt hàng đã giảm xuống dưới một giá trị cụ thể để tôi biết rằng cần phải đặt hàng sớm. Cho đến nay đây là mã của tôi:

Sổ làm việc này
Private Sub Workbook_AfterSave (ByVal thành công khi Boolean)
On Error Resume Next
Dim xI dưới dạng số nguyên
Dim xRg theo phạm vi
Đặt xRg = Range ("Thông tin! C3")
xI = Int (xRg.Value)
Nếu xI <5 Thì
Gọi Mail_small_Text_Outlook
Cuối Nếu
End Sub

Mô-đun 1
Sub Mail_small_Text_Outlook ()
Dim xOutApp làm đối tượng
Làm mờ xOutMail làm đối tượng
Dim xMailBody dưới dạng chuỗi
Đặt xOutApp = CreateObject ("Outlook.Application")
Đặt xOutMail = xOutApp.CreateItem (0)
xMailBody = "Xin chào" & vbNewLine & vbNewLine & _
"Đây là dòng 1" & vbNewLine & _
Phạm vi ("Thông tin! C3") & 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
Chào Jake,

Theo nhu cầu của bạn, xin vui lòng tìm Sổ làm việc này trong Ứng dụng Microsoft Visual Basic cửa sổ.
  567959C0-D2E1-4819-85E7-FA20A3D06BE9.png


Nhấn đúp chuột Sổ làm việc này và sao chép mã bên dưới:

'Update by Extendoffice 2022/2/17
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

On Error Resume Next

Dim RgC3 As Range
Dim RgC4 As Range
Dim RgC5 As Range

Set RgC3 = Range("Information!C3")
Set RgC4 = Range("Information!C4")
Set RgC5 = Range("Information!C5")


If (IsNumeric(RgC3) And RgC3.Value < 5) And (IsNumeric(RgC4) And RgC4.Value < 6) And (IsNumeric(RgC5) And RgC5.Value < 3) Then
Call Mail_small_Text_Outlook

ElseIf IsNumeric(RgC3) And RgC3.Value < 5 Then
Call Mail_small_Text_Outlook

ElseIf IsNumeric(RgC4) And RgC4.Value < 6 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 & _
Range("Information!C3") & 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


Vui lòng thay đổi phần xMailBody khi bạn cần.

Amanda
·
năm 2 trước
·
0 Likes
·
Phiếu bầu 0
·
0 Comments
·
Xem toàn bộ bài viết