邮件合并日期交换月份和日期

问题描述 投票:0回答:2

我有一个电子表格可以与 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")
excel vba date ms-word mailmerge
2个回答
1
投票

试试这个

{ IF{邮件合并到期 \ @"DD"} > 12 {邮件合并到期 \ @"DD/MM/YYYY"} {邮件合并到期 \ @"MM/DD/YYYY"}}


-1
投票

我想对@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 找到解决方案了吗?

© www.soinside.com 2019 - 2024. All rights reserved.