Office 365中Excel VBA设置Outlook定时自动回复报错求助
解决Outlook自动回复VBA代码的类型不匹配错误
错误原因分析
- 0x661F0040(自动回复开始时间):该MAPI属性要求传入UTC格式的Date类型值,原代码传入格式化后的字符串,导致类型不匹配。
- 0x661E001F(外部自动回复消息):该属性存储的是RTF格式内容,原代码直接传入纯文本字符串,不符合属性要求的类型。
修改后的代码
Option Explicit Sub SetAutoReply() Dim objOutlook As Outlook.Application Dim objNamespace As Outlook.Namespace Dim objStore As Outlook.Store Dim objPropertyAccessor As Outlook.PropertyAccessor Dim dtStartDate As Date, dtEndDate As Date Dim strMessage As String Dim rtfMessage As String ' 设置自动回复的起止时间(本地时间) dtStartDate = #5/16/2023 8:00:00 AM# dtEndDate = #5/16/2023 5:00:00 PM# strMessage = "I am currently out of the office and will return on [end_date]." ' 初始化Outlook On Error Resume Next Set objOutlook = GetObject(, "Outlook.Application") If Err.Number <> 0 Then Set objOutlook = CreateObject("Outlook.Application") End If On Error GoTo 0 ' 获取默认邮箱 Set objNamespace = objOutlook.GetNamespace("MAPI") Set objStore = objNamespace.DefaultStore Set objPropertyAccessor = objStore.PropertyAccessor ' 将纯文本转换为基础RTF格式 rtfMessage = "{\rtf1\ansi\deff0{\fonttbl{\f0 Calibri;}}\pard\ql\f0\fs24 " & strMessage & "\par}" ' 设置自动回复参数 With objPropertyAccessor ' 启用自动回复 .SetProperty "http://schemas.microsoft.com/mapi/proptag/0x661D000B", True ' 设置外部自动回复消息(RTF格式) .SetProperty "http://schemas.microsoft.com/mapi/proptag/0x661E001F", rtfMessage ' 设置开始时间(转换为UTC时间) .SetProperty "http://schemas.microsoft.com/mapi/proptag/0x661F0040", objPropertyAccessor.LocalTimeToUTC(dtStartDate) ' 设置结束时间(转换为UTC时间) .SetProperty "http://schemas.microsoft.com/mapi/proptag/0x66230040", objPropertyAccessor.LocalTimeToUTC(dtEndDate) End With ' 释放对象 Set objPropertyAccessor = Nothing Set objStore = Nothing Set objNamespace = Nothing Set objOutlook = Nothing MsgBox "自动回复已设置:从 " & dtStartDate & " 到 " & dtEndDate & "。", vbInformation, "自动回复设置完成" End Sub
关键修改说明
- 时间处理:使用
LocalTimeToUTC方法将本地时间转换为UTC时间,直接传入Date类型值给时间属性,匹配属性要求的类型。 - 消息格式:将普通文本包装为基础RTF格式字符串,满足0x661E001F属性对RTF内容的要求。如果需要复杂格式(换行、字体样式),可扩展RTF的内容结构。
内容的提问来源于stack exchange,提问作者user21868878
相关产品推荐
相关产品推荐

