我正在尝试在MS Word中插入日期字段,这将显示明天我们打开文档的日期。
我可以插入今天的日期{DATE \ @“dd / MM / yyyy”},我们可以使用修改后的公式插入明天的日期吗?
由于
答案 0 :(得分:1)
如果没有VBA,计算是可能的,但不是直截了当的,因为Word字段语言对与日期相关的操作的支持非常有限。
最初我认为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上插入的特殊字段代码括号对,并且(通常)在Mac Word上使用cmd-F9或fn-cmd-F9插入,具体取决于你的键盘设置。您可以根据需要更改末尾的格式(“\@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".
注意,这也依赖于以下假设:无论语言环境如何,Word总是正确识别以“YYYY-MM-DD”格式指定日期的月份和日期,换言之,“2016-04- 01“始终被识别为2016年4月1日,永远不会被认为是2016年1月4日。如果任何人都可以提供反例,那么假设是错误的,字段编码将需要更改,并且可能需要依赖于语言环境。< / p>