有没有简单的方法Excel (2013)
是否真的满足
send an email (Outlook or Exchange)
某些条件?
例如:
if A2 is between 80 and 90, send email to G2.
A2 是员工入职日期的结果today's date
,80 到 90 的结果意味着需要 90 天的审核。G2
会有主管、经理等的实际电子邮件地址。
此过程会自动发生,无需进入每个单元格来获取电子邮件地址并逐一发送电子邮件。
答案1
这Sub
将读取应用条件的选定单元格(列),执行测试,如果为 True,则读取电子邮件、主题、正文并发送电子邮件,并Sent
在发送后在同一行写入
它与 Outlook 配合使用
Column 1 Column 2 Column 3 column 4 column 5 column 6
80 email Manager Name Body Text Employee Name Sent or empty
您可以更改单元格(s,c + 2),单元格(s,c + 4)...以对应于您的列,
例如,如果 A2 是第 1 列,则 G2(第 2 列)将是单元格(s,c + 6),并根据您的数据移动其他单元格
您必须选择第 1 列中的单元格,然后 Sub 将继续
Sub SendReminderMail()
Dim s As Long, c As Long
Dim OutLookApp As Object
Dim OutLookMailItem As Object
Dim strBody As String
Set OutLookApp = CreateObject("Outlook.application")
Set OutLookMailItem = OutLookApp.CreateItem(0)
For Each Cell In Selection
Cell.Select
s = ActiveCell.Row
c = ActiveCell.Column
If Cells(s, c).Value > 80 And Cells(s, c).Value < 90 Then
strBody = Cells(s, c + 3) & " " & Cells(s, c + 4)
Set OutLookMailItem = OutLookApp.CreateItem(0)
With OutLookMailItem
.To = Cells(s, c + 1).Value
.Subject = "Reminder: "
.Body = "Dear " & Cells(s, c + 2).Value & "," & vbCrLf & vbCrLf & strBody
.Display ' or .Send
End With
Cells(s, c + 5) = "Sent"
End If
Next Cell
End Sub