excel - 发送一封电子邮件,其中包含该人的所有待处理主题
问题描述
我正在尝试创建一个宏,其中一个人的所有待处理任务,一封电子邮件,将包含在一封 Outlook 电子邮件中。基本上,该程序将搜索待处理的任务,将它们全部分组并将其发送到分配给它的人的电子邮件地址。
我能够修改/创建自动发送待处理任务提醒的代码,但它每封电子邮件发送一个任务。这会用多个提醒淹没这个人。
是否可以有一封电子邮件提醒,其中包括该人的所有待处理任务?
Sub Reminder()
Dim wStat As Range, i As Long
Dim dam As Object
For Each wStat In Range("D6", Range("D" & Rows.Count).End(xlUp))
If wStat.Value = "Pending" Then
i = wStat.Row
If Cells(i, "I").Value <= Range("I3").Value Then
Set dam = CreateObject("Outlook.Application").CreateItem(0)
dam.To = Range("L" & i).Value
dam.CC = Range("L" & i).Value
dam.Subject = Range("B" & i).Value
dam.Body = "Dear " & Range("E" & i).Value & "," & vbCr & vbCr & _
"This is to remind you that the task: " & Range("B" & wStat.Row).Value & " - " & " " & _
"is still pending." & vbCr & vbCr & _
"Thank you!"
'
dam.Send 'change send to display if you want to check
wStat.Value = "Pending"
End If
End If
Next
MsgBox "Reminders Sent!"
End Sub
解决方案
基于文件的图像,只创建一封电子邮件
Option Explicit
Sub Reminder()
Dim wks As Worksheet
Set wks = ActiveSheet
Dim LastRow As Long
Dim taskStr As String
Dim olApp As Object
Dim dam As Object
Set olApp = CreateObject("Outlook.Application")
Set dam = olApp.CreateItem(0)
dam.To = wks.Range("B2").Value
dam.Subject = "Pending Tasks"
LastRow = wks.Cells(wks.Rows.count, "A").End(xlUp).Row
Debug.Print "LastRow: " & LastRow
For i = 2 To LastRow
taskStr = taskStr & wks.Range("A" & i).Value & vbCr
Debug.Print taskStr
Next
dam.body = "Dear " & wks.Range("C2").Value & "," & vbCr & vbCr & _
"The tasks below are still pending: " & vbCr & vbCr & taskStr
dam.Display
End Sub
推荐阅读
- python - 使用 keras 将预测图像类与实际图像类进行比较
- ruby-on-rails - 如何从 Rails 列表中删除重复的国家/地区?
- java - 如何在java中选择底部图像视图?
- c# - 所有(OOP)依赖项的根存储在哪里?
- azure - 在 Azure DevOps 中,同一作业中的任务可以相互依赖吗?
- css - 当图像占据 > 50% 的屏幕时,如何删除 CSS:Float 属性
- python-3.x - 为什么要使用 batch_length 除以 num_steps 来确定 epoch_size?
- sql-server - 处理数据流任务中派生列中的截断错误
- elasticsearch - 过滤嵌套对象的计数聚合给出不正确的结果
- node.js - 带有 https 代理的 NodeJS EventSource 不起作用