由于vba excel宏,我试图将.docx进行邮件合并。
它非常适合String,但是当我想将日期合并为可读的日期格式时,则不能。
要解决此问题,我尝试使用以下行代码,但我始终以日期作为数字:
我得到了: 43682 ,但没有例外结果: 2019/06/18
{ MERGEFIELD MyDate \@ "dddd, dd MMMM yyyy" }
{ MERGEFIELD MyDate \@ "d MMMM yyyy" }
{ MERGEFIELD MyDate \@ "d-MMMM-yyyy" }
{ MyDate \@ "d MMMM yyyy" }
{ MERGEFIELD MyDate \@ MM/dd/yyyy}
将合并后的数据设置为日期格式到我的excel文件中,我做错了什么吗?
答案 0 :(得分:1)
由于您尚未发布VBA代码,因此无法确定问题所在。但是,最有可能是因为您的邮件合并正在连接到包含数据的打开的工作簿。另一种可能性是您在相关列中混合了数据类型,因此mailmerge将日期视为数字。 mailmerge主文档中的字段编码可用于解决此类问题。例如,要将43682转换为18/06/2019,可以使用编码为以下字段:
{QUOTE{SET jd{=2415019+{MERGEFIELD MyDate}}}
{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}" \@ "DD/MM/YYYY"}
注意:以上示例中的字段括号对(即“ {}”)都是通过Ctrl-F9(在Mac上为Cmd-F9,如果您使用使用笔记本电脑时,您可能需要使用Ctrl-Fn-F9);您不能简单地键入它们或从此消息中复制并粘贴它们。通过任何标准的Word对话添加它们也不可行。确实不需要换行符,但它们确实使结构更易于遵循。
有关将上述内容转换为工作字段的宏,请参见邮件合并技巧和窍门中的将字段的文本表示转换为工作字段: http://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html