Charles Kenyon 花了一些时间收集了许多人的作品并将其发布在他的网站上:http: //www.addbalance.com/word/datefields2.htm
使用日期计算的基本技巧是将它们分解为您正在尝试的日、月和年,但使用在 Word 字段中不起作用的 VBA 方法。事实上,在日期计算方面,Word 没有任何“智能”——您必须全部完成。所以,简单的例子:
theDate + 1 = { DocProperty theDate \@ "MMMM" } { = {DocProperty theDate \@ "dd" } + 1 }, { DocProperty theDate \@ "yyyy" }
这很好,直到您到达本月的最后一天。然后你必须考虑如果这是一年中的最后一天该怎么办......
这非常复杂,所以我将复制 Charles 网站上的信息:
这是一个令人头疼的事情!下面是一个字段,它以常规书面英文格式为您提供自文档创建之日起两周的日期:
- 创建日期:2015 年 7 月 9 日 - 所需字段结果 = 2015 年 7 月 23 日
- 创建日期:2014 年 7 月 23 日 - 所需字段结果 = 2014 年 8 月 6 日
- 创建日期:2014 年 12 月 20 日 - 所需字段结果 = 2015 年 1 月 3 日
- 创建日期:2015 年 2 月 27 日 - 所需字段结果 = 2015 年 3 月 12 日
创建日期:2016 年 2 月 27 日 - 所需字段日期结果 = 2016 年 3 月 13 日
{ QUOTE "{ SET " Delay" "14" } { SET "DaysInMonth" { IF { CreateDate \@ "MM" } <> 2
{ = ROUND(30.575*{ CreateDate \@ "MM" },0)- ROUND( 30.575*{ = { CreateDate \@ "MM" } -1 },0) } { IF { = MOD( { CreateDate \@"yy" } , 4 ) } > 0 "28" "29" } } { SET "NextMonth" { IF { CreateDate \@ "MM" } = 12 "1/97" "{ = { CreateDate \@ "MM" } + 1 }/97 } } { IF { = { REF "延迟" } + { CreateDate \@ "dd" } } <= { REF"DaysInMonth" } { CreateDate \@ "MMMM { = { REF "Delay" } + { CreateDate \@ "dd" } }, yyyy"}{ QUOTE { NextMonth \@ "MMMM" } { = { REF "延迟" } + { CreateDate \@ "dd" } - { REF"DaysInMonth" } }, { IF { CreateDate \@ "MM" } <> 12 { CreateDate \@ "yyyy" } { CreateDate \@ "{ = 1 + {创建日期 \@ "yyyy" } # "xxxx" }" } } } }" }
上面示例字段中的颜色(如下图!)代表我尝试匹配字段分隔符并显示字段嵌套。为了清楚起见,添加了换行符,不应成为实际字段的一部分。我添加的这些修改有助于说明该字段的外观。以绿色显示的字段不包含嵌套字段,但可能包含对其他字段设置的书签值的引用。
