Otm的VBA项目添加日期过滤器后筛选查询解析失败求助
Outlook VBA筛选查询添加日期过滤器报错的解决办法
你的问题出在Outlook的SQL筛选语法对日期时间值的格式要求上,具体问题和修正方案如下:
错误原因
在Outlook的@SQL筛选语句中,日期时间值不能用单引号'包裹,必须使用#符号作为日期时间的分隔符;同时,日期格式建议采用yyyy-mm-dd hh:mm:ss的标准格式,避免因系统区域设置差异导致解析错误。
修正后的代码
方案1:使用标准字段名+正确日期格式
filter = "@SQL=( NOT(""urn:schemas-microsoft-com:office:office#Keywords"" LIKE '%MACHINE_GENERATED%') AND [ReceivedTime] > #2023-08-20 14:47:59# )"
方案2:使用完整属性命名空间(更兼容Exchange环境)
如果是针对Exchange邮箱的筛选,使用属性的完整命名空间能避免字段名识别问题:
filter = "@SQL=( NOT(""urn:schemas-microsoft-com:office:office#Keywords"" LIKE '%MACHINE_GENERATED%') AND ""urn:schemas:httpmail:datereceived"" > #2023-08-20 14:47:59# )"
额外注意点
- 确保日期时间的格式是系统能正确解析的,优先用
yyyy-mm-dd的格式,不要依赖mm/dd/yyyy这种区域敏感的格式。 - 所有属性引用的引号要配对正确,命名空间属性需要用双引号包裹(VBA里用两个双引号转义)。
内容的提问来源于stack exchange,提问作者junkone
相关产品推荐
相关产品推荐

