如何将replyEmail的DeferredDeliveryTime设置为两天后上午9点?
解决Outlook VBA邮件延迟交付到指定时间的问题
要将邮件延迟到两天后的上午9点交付,你需要把日期偏移和指定时间结合起来,修正后的代码如下:
' 合并写法,直接设置目标时间 replyEmail.DeferredDeliveryTime = DateAdd("d", 2, Date) + TimeValue("09:00:00")
或者拆分步骤更清晰:
' 获取两天后的日期(仅日期部分,时间为00:00:00) Dim twoDaysLater As Date twoDaysLater = DateAdd("d", 2, Date) ' 加上上午9点的时间,得到最终延迟时间 replyEmail.DeferredDeliveryTime = twoDaysLater + TimeValue("09:00:00")
问题原因说明
- 你之前用
DateAdd("d", 2, Now)的问题在于,Now()包含当前的时分秒,所以得到的是两天后的同一时刻,而非指定的9点。 Date函数仅返回当前日期的0点时间,结合TimeValue("09:00:00")可以精准生成当天9点的时间,再通过DateAdd偏移两天,就能得到正确的目标交付时间。- 你之前尝试的
Date + Time("09:00:00")缺少两天的偏移,只会设置到当天9点(若当前时间已过9点,还可能出现逻辑错误),因此必须结合日期偏移处理。
内容的提问来源于stack exchange,提问作者WyattR
相关产品推荐
相关产品推荐

