【发布时间】:2020-02-20 06:53:16
【问题描述】:
我正在开发一个机器维护系统。当特定机器的维修日期临近时,我需要向进行机器维护的一方发送提醒电子邮件。
我想从服务详细信息表中搜索下一次服务的日期,并且我想从机器详细信息表中获取该特定机器的服务提供商的电子邮件地址。
我想发送两封电子邮件:
- 服务日期前七天
- 服务日期
电子邮件的正文应该是,
- 计划于 2020 年 1 月 1 日为复印机(机器类型取自机器详细信息表)提供服务(下一个服务日期取自服务详细信息表。
- 今天为复印机(机器类型取自机器详细信息表)安排了一项服务。
我想在不打开 Excel 文件的情况下自动发送电子邮件。
我浏览了许多类似的在线主题,但找不到我要搜索的内容,而且我对 VBA 的熟练程度不足以适应它们。
这是我正在使用的代码:
Sub email()
Dim r As Range
Dim cell As Range
Set r = Range("U2:U10000")
For Each cell In r
If cell.Value = Date + 7 Then
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Body As String
Dim Mail_Object, Mail_Single As Variant
Dim Machine_Code As Long
Dim Machine_Type As Long
Machine_Code = Application.WorksheetFunction.VLookup(cell.Value, Range("A:U"), 21, False)
Machine_Type = Application.WorksheetFunction.VLookup(Machine_Code, Sheet1.Range("B:C"), 1, False)
Email_Subject = "Service Reminder"
Email_Send_From = "k.s@*******"
Email_Send_To = Application.WorksheetFunction.VLookup(Machine_Code, Sheet1.Range("C:M"), 11, False)
Email_Cc = "D@******.com"
Email_Body = "There is a Service scheduled for a" & Machine_Type & "on" & cell.Value
On Error GoTo debugs
Set Mail_Object = CreateObject("Outlook.Application")
Set Mail_Single = Mail_Object.CreateItem(0)
With Mail_Single
.Subject = Email_Subject
.To = Email_Send_To
.cc = Email_Cc
.Body = Email_Body
.send
End With
End If
Next
Exit Sub
debugs:
If Err.Description <> "" Then MsgBox Err.Description
End Sub
【问题讨论】:
-
我也知道可以通过这个帖子stackoverflow.com/questions/31189863/…