Python使用win32com操作Outlook时DateAdd赋值FlagDueBy报错如何解决
错误原因
DateAdd是VBA内置的日期运算函数,仅在VBA环境中可用,Python的win32com.client模块本身没有封装该方法,因此直接调用会抛出AttributeError报错。
解决方案
使用Python标准库datetime计算目标日期直接赋值即可,Outlook可以正常识别Python的日期类型,无需调用VBA函数:
- 若仅需要设置日期:用
datetime.date.today()获取当前日期,加上datetime.timedelta(days=3)即可得到3天后的日期 - 若需要同时设置时间:替换为
datetime.datetime.now()即可
修正后的完整代码如下:
import win32com.client as win32 import datetime outlook = win32.Dispatch('outlook.application') mail = outlook.CreateItem(0) #attachment1 = "x:\\report.htm" attachment1 = "c:\\installAgent.log" mail.Attachments.Add(Source=attachment1) mail.To = "obama@hotmail.com" mail.Subject = "test" mail.HtmlBody = '<h2>HTML Message body</h2>' # 该字段为可选字段 mail.FlagRequest = "Follow up" # 直接用Python原生方法计算3天后的日期 mail.FlagDueBy = datetime.date.today() + datetime.timedelta(days=3) mail.Display(True)
内容的提问来源于stack exchange,提问作者Gergo Peltz
相关产品推荐
相关产品推荐

