MailMerge格式为日期不起作用

时间:2016-06-08 15:39:33

标签: ms-word mailmerge

我有一个单词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中文字的屏幕截图):

(Screenshot)

1 个答案:

答案 0 :(得分:1)

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

当您看到“数字Excel日期”时,常见的问题是您在Excel和OLE DB提供程序(或可能是ODBC)中相关列的前几行中有混合数据类型驱动程序)已确定该列为“数字”。在存档的网页here中有相当详细的描述。

所以可以说最好的解决办法是修复数据,如果你能控制它的话。

否则,您引用的主题中的一个响应具有一组域代码,这些域代码将Excel“日期编号”重新转换为Word可以使用的日期。这样做的一个问题是,如果列的日期格式为文本,则它们将丢失,因为提供者/驱动程序将文本值转换为数字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},因为它似乎可以更好地应对本地化问题)