MailMerge 格式作为日期不起作用

MailMerge format as date not working

我有一个 word MailMerge 文档,该文档链接到一个 Excel 数据电子表格。在那里,我有两列日期(格式为 Excel 中的短日期)。

尝试在我的 Word MailMerge 文档中使用这些字段时,我无法将日期显示为日期...而是显示 "Excel" 日期,例如 42156 而不是 6/01 /2015.

我已经 looked around 试过了,但似乎不起作用。这是按 ALT+F9 后 Word 中的文本:

{ MERGEFIELD Start_Date \@"d,MMMM,YYYY" }

我玩过其他版本\@"dd,MMM,yyyy",但似乎什么也听不懂。

我可能忽略或没有做什么?

(Word中文字截图):

您提到的问题最初是关于一个不同的问题,它与 OLE DB 提供程序参与获取数据时日期和月份数字的反转有关。

当您看到 "numeric Excel dates" 时 通常 问题是您在 Excel 中相关列的前几行混合了数据类型,并且OLE DB 提供程序(或可能是 ODBC 驱动程序)已确定该列为 "Numeric"。在存档网页 here 中对此有相当详细的描述。

因此可以说最好的解决方案是修复数据,如果您可以控制它的话。

否则,您引用的线程中的一个响应有一组字段代码,可以将 Excel "date numbers" 重新转换为 Word 可以使用的日期。一个问题是,如果该列确实有日期格式为文本,它们将丢失,因为 provider/driver 会将文本值转换为数字 0。

响应是 "macropod" 的响应,具有以下字段编码,我已对其进行了更改以满足您规定的要求。所有 {} 都必须是您可以在 Windows 版本的 Word 中使用 ctrl-F9 输入的特殊字段代码大括号对:

{QUOTE
{SET Delay{=INT({MERGEFIELD Start_Date})}}
{SET jd{=2415019+Delay}}
{SET e{=INT((4*(jd+32044)+3)/146097)}}
{SET f{=jd+32044-INT(146097*e/4)}}
{SET g{=INT((4*f+3)/1461)}} {SET h{=f-INT(1461*g/4)}}
{SET i{=INT((5*h+2)/153)}}
{SET dd{=h-INT((153*i+2)/5)+1}}
{SET mm{=i+3-12*INT(i/10)}}
{SET yy{=100*e+g-4800+INT(i/10)}}
"{dd}-{mm}-{yy}" \@ "D,MMMM,yyyy"}

(我个人认为在最后一行使用 {yy}-{mm}-{dd} 更好,因为它似乎可以更好地应对本地化问题)