如何修改Outlook宏:将邮件标记截止日期从Now+7天改为项目截止日期+7天
修改Outlook宏:基于邮件截止日期而非当前时间计算任务截止日期
没问题!要实现这个需求,你只需要把代码里的截止日期计算逻辑从当前时间加7天改成邮件自身已有的截止日期加7天就可以了,我帮你调整了代码,还加了容错处理避免邮件无截止日期时出错:
Sub AddDaysToMailDueDate() Dim objMsg As Object ' 获取当前选中的邮件/项目 Set objMsg = GetCurrentItem() With objMsg ' 设置本周到期标记 .MarkAsTask olMarkThisWeek ' 核心改动:基于邮件原有的任务截止日期加7天 ' 先判断邮件是否已有截止日期,避免空值报错 If Not IsEmpty(.TaskDueDate) Then .TaskDueDate = .TaskDueDate + 7 Else ' 可选:如果邮件原本没有截止日期, fallback到当前时间加7天 .TaskDueDate = Now + 7 End If ' .FlagRequest = "Call " & objMsg.SenderName .ReminderSet = False ' .ReminderTime = Now + 2 .Save End With Set objMsg = Nothing End Sub
关键说明:
- 原来的
.TaskDueDate = Now +7是取当前系统时间加7天,现在改成.TaskDueDate = .TaskDueDate +7后,就会基于邮件本身已经设置的TaskDueDate属性来计算新的截止日期 - 加入
IsEmpty(.TaskDueDate)判断是为了防止遇到原本没有设置截止日期的邮件时出现运行错误,你可以根据自己的需求选择是否保留这个fallback逻辑:- 如果不需要 fallback,直接删除
Else分支即可 - 也可以换成提示用户“该邮件无截止日期”的逻辑
- 如果不需要 fallback,直接删除
内容的提问来源于stack exchange,提问作者slmglc
相关产品推荐
相关产品推荐

