我有一个电子表格可以与 Word 模板文档进行邮件合并。邮件合并由 VBA 代码触发。有些日期显示不正确。
Word-doc 合并字段的格式如下:{MERGEFIELD DUE@"dd MMM yyyy hh:mm AM/PM"}
Excel 单元格具有以下日期:
“2021 年 1 月 7 日上午 10:58:00”
并且具有“dd mmmm yyyy hh:mm AM/PM”的自定义格式,以便显示为
“2021 年 7 月 1 日上午 10:58”
合并后,此日期显示为:“2021 年 1 月 7 日上午 10:58”
我们使用英国日期格式。 PC 上的日期时间设置为:短日期:24/06/21
触发邮件合并的VBA代码是:
Set wdDoc = wdApp.Documents.Open(Filename:=StrMMDoc, AddToRecentFiles:=False, ReadOnly:=True, Visible:=False)
With wdDoc
With .MailMerge
.MainDocumentType = wdFormLetters
.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$`"
For i = 1 To .DataSource.RecordCount
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
'..... etc
更新:我现在在电子表格和Word模板中尝试了几种不同的日期格式。总是有相同的结果。
我还添加了以下代码来格式化单元格值:
Value = Format(DueDate, "dd MMMM yyyy hh:mm AM/PM")
试试这个
{ IF{邮件合并到期 \ @"DD"} > 12 {邮件合并到期 \ @"DD/MM/YYYY"} {邮件合并到期 \ @"MM/DD/YYYY"}}
我想对@GET T的答案发表评论,但该网站不允许我这样做。
提出的解决方案是一个创造性的解决方案,但它不适用于完整的日期,有建议吗?
例如:
{ IF { MERGEFIELD ESTADO_CIVIL_DATA \ @"dd"} > 12 { MERGEFIELD ESTADO_CIVIL_DATA \@"dd' de 'MMMM' de 'yyyy" } { MERGEFIELD ESTADO_CIVIL_DATA \@ "MM' de 'dddd' de 'yyyy" } }
上面代码的日期“1984 年 10 月 8 日”结果:“08 of friday of 1984”(巴西日期标准) 如果它是数字日期,它会起作用,但对于本文档,我需要这样。
@LMORSE 找到解决方案了吗?