这是一个很奇怪的问题,如果某个聪明的人有时间玩文字宏或类似的东西,我将非常感激能够给出解决方案。
我有一个word(2007)文档,其中按顺序散布着几个连续的日期。
我需要这种特定的定制日期戳格式,如下所示:
Sa 18/3/23
Su 19/3/23
M 20/3/23
Tu 21/3/23
W 22/3/23
Th 23/3/23
F 24/3/23
请注意,星期名称缩写为一个字母当这是明确的(例如,F 只能表示星期五),否则为 2 个字母(S 可能是星期六或星期日,因此我使用 Sa 和 Su)。
我真的很笨——每次我想为下周打印更多纸张时,我都会手动输入这些日期。我必须在很难找到的地方更改一堆连续的日期。
请有人能告诉我如何手动设置第一个日期,以便其余日期自动连续并使用我使用的奇怪的短格式显示吗?
如果我能弄清楚如何做,我会尝试附加实际文档。
提前感谢您的帮助。
答案1
使用复杂的字段代码并不理想,特别是因为字段代码的工作方式,在保存、关闭和重新打开文档时很容易丢失重新使用相同变量名的多个计算的结果。
就我个人而言,我可能会寻找一种依赖于一些 VBA 和一些内容控件的解决方案。
但如果您无法使用 VBA,请尝试以下操作:
将以下字段代码放入文档标题中(或其他不会意外损坏的位置)并更新它们:
{SET SAT "Sa "}{SET SUN "Su "}{SET MON "Mo "}{SET TUE "Tu"}{SET WED "W "}{SET THU "Th "}{SET FRI "F "}
然后定义日期前您想要开始的日期如下:
{SET Y 2023}{SET M 3}{SET D 20}
然后,对于每个日期,插入以下嵌套字段
{ SEQ C \h}{SET D{=D+1}}{SET "XDATE{SEQ C \c}" "{=Y}-{=M}-{=D}"}{SET E{={"XDATE{SEQ C \c}" \@YYYY}<Y}}{SET Y{=Y+(E*(M=12))}}{SET M{=IF(E,IF(M=12,1,M+1),M)}}{SET D{=IF(E,1,D)}}{SET "XDATE{SEQ C \c}" "{=Y}-{=M}-{=D}"}{REF {"XDATE{SEQ C \c}" \@DDD}}{"XDATE{SEQ C \c}" \@D/M/YY}
确保全部这{}
是特殊字段代码括号对,您可以在 Windows Word 中使用 ctrl-F9 输入。(Mac Word 和不同键盘的这些键有不同的变体)。
然后使用 ctrl-A 选择您的文档并更新所有字段。总是确保你更新全部将这些领域整合在一起。
我们使用 SEQ 字段创建存储在书签中的七个连续日期,分别命名为 XDATE1、XDATE2、..、XDATE7
计算依赖于以下事实:如果 XDATE1(假设)是有效日期,则\@YYYY
格式选项将返回年份的日期部分,但如果它不是有效日期(例如,假设将其设置为“2023-2-29”或“2023-12-32”),则格式\@YYYY
选项无效,并返回整个字符串“2023-2-29”,因此它不会等于 Y 中的值,即 2023 年。(事实上,2023-2-29 在这里被视为算术表达式,结果为 1992,即小于 Y)
{REF {DT @DDD}} 选取 3 个字母的星期缩写,例如 WED 代表星期三,因此我们得到了 {REF WED},并且由于我们之前的 {SET WED "W "} 插入了您想要的缩写。如果您愿意,您可以将这种方法与其他人提到的“macropod”字段一起使用。