You need to enable JavaScript to run this app. VBA触发Excel与Word邮件合并时日期月日颠倒问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

VBA触发Excel与Word邮件合并时日期月日颠倒问题咨询

问题原因

这是Office邮件合并的经典区域兼容性问题:默认数据源读取引擎会优先使用美国「月/日/年」格式解析日期值,即便系统和Excel都设置了英国「日/月/年」格式,也会把01/07/2021误判为1月7日,而非正确的7月1日。你之前添加的Format代码没有效果,是因为数据源读取阶段日期已经被解析错误,后续格式化的是已经出错的日期值。

解决方案(按实现优先级排序)

1. 数据源连接添加英国区域ID

在现有OpenDataSource方法的参数末尾新增LocaleID:=2057(2057为英国英语的区域编码),强制引擎用「日/月/年」规则解析日期,修改后代码如下:

.OpenDataSource Name:=StrMMSrc, ReadOnly:=True, AddToRecentFiles:=False, _
  LinkToSource:=False, Connection:="Provider=Microsoft.ACE.DDE.12.0;User ID=Admin;" & _
  "Data Source=StrMMSrc;Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";", _
  SQLStatement:="SELECT * FROM `FTR$`", _
  LocaleID:=2057

2. SQL查询直接输出格式化后的日期文本

直接在查询阶段把日期转换为无歧义的文本,避免后续解析出错,修改SQL语句如下:

SQLStatement:="SELECT *, FORMAT(DUE, 'dd mmmm yyyy hh:mm AM/PM') AS DUE_FORMATTED FROM `FTR$`"

后续将Word模板中的合并域绑定到新生成的DUE_FORMATTED字段即可,不需要额外添加格式开关。

3. Word合并域添加区域规则开关

修改Word模板中的合并域,新增\l 2057参数指定用英国区域规则处理日期:

{MERGEFIELD DUE \@ "dd MMM yyyy hh:mm AM/PM" \l 2057}

内容的提问来源于stack exchange,提问作者LMORSE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 00:24:03