Ms word 获得明天&x27;MS Word插入字段中的s日期

Ms word 获得明天&x27;MS Word插入字段中的s日期,ms-word,Ms Word,我正在尝试在MS Word中插入日期字段,该字段将显示我们打开文档的明天的日期 我可以插入今天的日期{date\@“dd/MM/yyyy”},我们可以使用修改后的公式插入明天的日期吗 由于没有VBA,计算是可能的,但并不简单,因为Word field语言对日期相关操作的支持非常有限 最初我认为Word会在您打开或关闭/重新打开文档时自动更新日期,但进一步的实验表明,即使这里的第二个建议也不会这样做 在描述的特定情况下(添加1天),您应该能够使用以下字段编码: {QUOTE {SET xxx {

我正在尝试在MS Word中插入日期字段,该字段将显示我们打开文档的明天的日期

我可以插入今天的日期{date\@“dd/MM/yyyy”},我们可以使用修改后的公式插入明天的日期吗


由于没有VBA,计算是可能的,但并不简单,因为Word field语言对日期相关操作的支持非常有限

最初我认为Word会在您打开或关闭/重新打开文档时自动更新日期,但进一步的实验表明,即使这里的第二个建议也不会这样做

在描述的特定情况下(添加1天),您应该能够使用以下字段编码:

{QUOTE {SET xxx { DATE }}{SET yyy {xxx \@YYYY}}{SET mmm {xxx \@M}}{SET xxx1 {={xxx \@YYYYMMDD}+1 \#0000'-'00'-'00}}{=13-{xxx1 \@M} \#"'{xxx1}';'{=mmm-11 \#'{=yyy+1}-01-01';'{yyy}-{=mmm+1 \#00'-01'}'"}'"} \@DD/MM/YYYY} 
所有的
{}
必须是特殊的字段代码大括号对,您可以使用ctrl-F9在Windows Word上插入,并且(通常)使用cmd-F9或fn-cmd-F9在Mac Word上插入,具体取决于您的键盘设置。您可以根据需要更改结尾处的格式(“
\@DD/MM/YYYY
”)

但是,当您打开文档时,Word可能不会自动更新这组字段代码,因此用户需要选择字段代码并按F9

我原本以为Word会使用以下编码更新打开和/或关闭/重新打开的日期,但现在我认为我错了。它在最新版本的Windows Word上实现的一个功能是在“气泡”中显示日期字段,并提供更新字段的选项:

{DATE \@"'{QUOTE {SET xxx { DATE }}{SET yyy {xxx \@YYYY}}{SET mmm {xxx \@M}}{SET xxx1 {={xxx \@YYYYMMDD}+1 \#0000'-'00'-'00}}{=13-{xxx1 \@M} \#"'{xxx1}';'{=mmm-11 \#'{=yyy+1}-01-01';'{yyy}-{=mmm+1 \#00'-01'}'"}'"} \@DD/MM/YYYY}'"}
以下是该算法的一些伪代码:

Set xxx to the date.
Set yyy to the 4-digit year
Set mmm to the month
Set xxx1 to the date but with the day number incremented by 1. e.g., for 2016-12-31, that would be a string, "2106-12-32"
This is the tricky bit:
Try to extract the month from that date using { xxx1 \@M }. If the date is valid, { xxx1 \@M } will return a valid month number, i.e. in the range 1 to 12. If the date is not valid, { xxx1 \@M } will return xxx1, e.g. "2106-12-32", which the { = } field will treat as a calculation, i.e. "year-(a maximum of 12+32=44)", so it is always going to return a number larger than 12.
If xxx1 is a valid date then
  result=xxx1
Else 'xxx1 is not a valid date so...
  If mmm (the original month) is 12 then
    result = "(yyy+1)-01-01"
  Else
    result = "yyy-(mmm+1)-01"
  End If
End If
Apply the date format you want to "result".

注意,这还取决于这样一种假设,即当您以“YYYY-MM-DD”格式指定日期时,Word始终正确识别月份和日期,而不考虑区域设置,换句话说,“2016-04-01”始终识别为2016年4月1日,而非2016年1月4日。如果有人可以提供反例,那么假设是错误的,字段编码将需要更改,并且可能需要依赖于区域设置。

你好,bibadia,谢谢你,我想在我的问题中补充一点,我不想使用VBA,我想让字段自动更新。我尝试了代码,但我得到:错误!定义的图片开关太多。我使用Ctrl+F9添加{},但是上面的错误就在那里。有什么想法吗?@user72343:通常这意味着你错过或错放了{}对中的一对。我刚刚通过了第一个表达式,并验证了它在这里是否有效。但这很难用手做到,所以我暂时在中放置了一个.docx,其中包含两个字段构造-我建议您下载,复制/粘贴到您自己的文档中,看看会发生什么。再次感谢bibadia,它工作得非常好。它没有自动更新日期(我更改了系统日期以进行检查)。我使用的是32位的Word 2010。你能再上传一份文件吗。用第三个代码检查它是否会更新。@user72343:据我所知,它只会在您打开(或关闭并重新打开文档)时自动更新。这是字段代码的一般问题。在最新版本的Windows Word中,日期字段通常有一个“环绕”,并带有更新选项。如果您发现以{DATE]开头的字段代码即使在您打开/重新打开Word文档时也不会自动更新,那是哪个版本的Word?它是Professional Plus 2010!打开/重新打开没有更新字段。是否有可能?