如何在 Word 中创建一个宏,将“最佳使用日期”设置为自今天起一年后重复的日期,就像调用时在 Word 中显示今天的日期一样?
答案1
您的意思是仅生成“12/23/2018”吗?
- 将其输入
Date \@ “MM/dd/”=date \@ “yyyy”+1
(或复制并粘贴)到 Word 文档中。
这似乎不区分大小写(日期格式除外)。
“直引号”()和“花括号”() 似乎可以互换。 - 选择
Date \@ “MM/dd/”
并按Ctrl+ F9,这会将其更改为字段。它的外观将更改为, 并且可能具有灰色背景。每次按+时都会发生相同的转变。不要输入任何花括号!{ Date \@ “MM/dd/” }
CtrlF9 - 选择
date \@ “yyyy”
并按Ctrl+ F9。 - 选择 并按+ 。该行现在应如下所示:。
={ date \@ “yyyy” }+1
CtrlF9
{ Date \@ “MM/dd/” }{ ={ date \@ “yyyy” }+1 }
- 然后选择整行并按F9(不是 Ctrl+ F9)。
- 如果什么都没发生,请按Shift+ F9 (再次,不是 Ctrl+ F9),这样就可以了。
这只需获取今天的日期,将其格式化为“MM/dd/”(即“12/23/”),然后在其后加上当前年份加一。(如果您想要其他格式,只需更改它即可。)例如,如果您想要“yyyy/MM/dd”,请将起始文本更改为=date \@ “yyyy”+1Date \@ “/MM/dd”
并按照相同的说明进行操作(不同之处在于MM/dd/
已替换为/MM/dd
,因为您想要的是/
年份和月份之间的,而不是日期之后的)。
我不太清楚你说的“将其保存为宏并命名”是什么意思。也许这就是你想要的:
- 输入
Set best_date quote =date \@ “yyyy”+1Date \@ “/MM/dd”
。您可能希望在文档开头附近的某个位置执行此操作。 - 按照上述 所有Ctrl+步骤进行操作。F9
- 选择 (即从该行到行尾的所有内容)并按+ 。
quote { ={ date \@ “yyyy” }+1 }{ Date \@ “/MM/dd” }
quote
CtrlF9 - 选择 (即整行)并按+ 。
Set best_date { quote { ={ date \@ “yyyy” }+1 }{ Date \@ “/MM/dd” } }
CtrlF9 - F9重复上面列表中的最后两个步骤(带有和Shift+ 的步骤F9)。现在,您刚刚完成的所有操作都将消失,但您将定义一个名为 的“书签”,
best_date
其中包含下一年的日期。从实际目的来看,这是一个变量;它可能与您所说的“宏”的意思非常接近。 - 现在,在文档中您想要使用未来日期的任何位置,键入
best_date
并将其转换为如上所述的字段(Ctrl+F9和 F9 + Shift)F9。
best_date
只是一个任意标识符。您可以使用任何有效的标识符,例如bob_string
。
警告:如果您在 2020 年 2 月 29 日使用它,它将显示“2021/2/29”,这不是一个有效的日期。
好的,在您报告的评论中,当您保存并重新打开文档时,会出现以下字段,例如
{设置最佳日期{引用{={日期 \@“yyyy”}+1}{日期 \@“/MM/dd”} } }
并且日期不显示。这是由全局 Word 设置控制的。至少有几种方法可以修复它:
- 道路微软告诉你去做吧:
- 进入“Word 选项”。在较旧的 Word 版本(2010 之前)中,可通过“Orb”访问。在 Word 2010 和 2013(以及更高版本?)中,它是“文件”→“选项”。
- 转到“高级”(通过单击选项窗口左栏中的“高级”)。
- 向下滚动到“显示文档内容”部分。
- 点击“显示字段代码而不是其值”清除(取消选中)复选框。
- 一种更短的方法:
- 按Alt+ F9。一次。在任何文档中。
当然,你必须在每台机器上执行一次此操作(上述操作之一)。可能每台机器一次每个用户或者,如果用户看到显示的字段代码,就告诉他们这样做(我推荐Alt+一)。F9
我不确定我是否理解了您的另一个问题。您是说,如果您在 2017 年 12 月 28 日按照上述说明操作,您将获得所需的未来日期“2018/12/28”,但如果您保存它,然后在 12 月 29 日重新打开它,它仍会显示“2018/12/28”,但您希望它显示“2018/12/二十九”?这有点棘手。显然,Microsoft Word 被设计为在您打开文档时不更新字段(可能是因为理论上可能需要很长时间)。以下是两种解决方案:
-
- 选择整个文档(最简单的方法是按Ctrl+ A),然后
- 按F9。
很遗憾,每一个用户必须学会这样做每一个他们打开文档的时间(或至少每天)。
正如所描述的这里,写一个
AutoOpen
宏,说Sub AutoOpen() With Options .UpdateFieldsAtPrint = True .UpdateLinksAtPrint = True End With ActiveDocument.Fields.Update End Sub
看如何在 MS Office 中添加 VBA? 了解有关此机制的一般信息。
我推荐选项 1;宏可能会很麻烦。但是,如果您的用户不愿意学习新程序,选项 2 可能是您的更好选择。