向单个邮箱发送多封不同延迟投递时间邮件的VBA问题
修复Excel VBA批量创建延迟投递邮件的问题
问题原因
原代码仅创建了单个邮件对象,并且错误地将A2、A3、A4三个单元格的日期值相加后设置为延迟投递时间,这只会生成一封延迟时间为三个日期总和的邮件,而非分别对应三个单元格日期的三封独立邮件。
修正后的VBA代码
Sub Send_Deferred_Mail_From_Excel() Dim OutlookApp As Object Dim OutlookMail As Object Dim xRg As Range Dim cell As Range Set xRg = Range("A2:A4") Set OutlookApp = CreateObject("Outlook.Application") ' 遍历每个日期单元格,创建对应延迟邮件 For Each cell In xRg Set OutlookMail = OutlookApp.CreateItem(0) With OutlookMail .To = "email@example.com" ' 替换为实际目标邮箱 .CC = "" .BCC = "" .Subject = "HI" .Body = "HELLO" .DeferredDeliveryTime = cell.Value ' 使用当前单元格的日期作为延迟投递时间 .Display ' 如需直接发送邮件,替换为 .Send End With Set OutlookMail = Nothing Next cell Set OutlookApp = Nothing MsgBox "三封延迟邮件已生成完毕!", vbInformation End Sub
关键修改说明
- 循环遍历目标单元格:通过
For Each cell In xRg逐个处理A2到A4的每个日期值 - 每次循环创建新邮件对象:将
Set OutlookMail = OutlookApp.CreateItem(0)放入循环内部,确保每个日期对应一封独立邮件 - 正确设置延迟时间:直接将当前单元格的
cell.Value赋值给.DeferredDeliveryTime,避免原代码中错误的日期相加操作 - 添加操作完成提示:邮件生成后弹出提示框,方便确认任务完成状态
内容的提问来源于stack exchange,提问作者kimk
相关产品推荐
相关产品推荐

