Private Sub Document_Close()
Call RevertWWYY
End Sub
Private Sub Document_New()
End Sub
Private Sub Document_Open()
Call ReplaceWWYY
End Sub
Sub ReplaceWWYY()
With Selection.Find
.Forward = True
.Text = "WWYY"
.Replacement.Text = CStr(Format(DatePart("ww", Date, vbMonday, vbFirstFourDays), "00")) + CStr(Right(Year(Date), 2))
.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
ActiveDocument.Save
End Sub
Sub RevertWWYY()
With Selection.Find
.Forward = True
.Text = CStr(Format(DatePart("ww", Date, vbMonday, vbFirstFourDays), "00")) + CStr(Right(Year(Date), 2))
.Replacement.Text = "WWYY"
.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
ActiveDocument.Save
End Sub
2条答案
按热度按时间ygya80vv1#
假设您的word文档中有文本“WWYY”,我提到的方法至少会将“WWYY”替换为您想要的格式。
您必须将文档保存为启用了Word宏的文档(.docm)。使用快捷方式
Alt+F11
或Option+fn+F11
打开Microsoft Visual Basic编辑器(macOS)。单击左侧项目工具栏上的ThisDocument
。ThisDocument
的代码编辑器将打开。现在,您可以使用以下类似的代码将WWYY
的示例替换为填充的值。的日期WWYY
将被替换为0823
。我还编写了另一个函数,当文件关闭时,该函数将把值(即0823
)恢复为WWYY
。这样,当文件在不同的时间打开时,该功能仍然有效。注意!它将替换
WWYY
或0823
的所有示例。因此,更好的办法是使用WWYY
的前缀。在文档中,您将拥有Prefix WWYY
以及ReplaceWWYY和ReplaceWWYY函数中的相应前缀。(ReplaceWWYY中的.Text = "Prefix WWYY"
以及ReplaceWWYY中的.Text = "Prefix " + CStr(Forma...
和.Replacement.Text = "Prefix WWYY"
)。h5qlskok2#
Word中没有与Excel中的WEEKDAY函数等效的函数。可以通过编码为以下形式的字段来获得所需的结果:
上述域代码基于我的Microsoft Word日期计算教程中的 * 计算两个日期之间的天数差 * 示例,可从以下网址获得:
https://www.msofficeforums.com/word/38719-microsoft-word-date-calculation-tutorial.html
**注意:**以上示例中的字段大括号对(即“{}”)都是在文档本身中创建的,通过Ctrl-F9(在Mac上使用Cmd-F9,或者如果您使用笔记本电脑,则可能需要使用Ctrl-Fn-F9);你不能简单地输入它们或者从这封邮件中复制粘贴它们。通过任何标准的Word对话框添加它们也是不切实际的。在字段构造中表示的空格都是必需的。换行符不是必需的--它们只是用来使代码结构更容易看到。
有关将上述域代码表示形式转换为工作域代码的宏,请参阅Mailmerge提示和技巧主题中的 * 将域的文本表示形式转换为工作域 *:
https://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html
对于希望简化获取JDStart的字段代码的任何人,可以减少:
致: