Word 2007自定义缩写日期序列自动填充解决方案求助
Word 2007自定义缩写日期序列自动填充解决方案求助
嘿,我完全懂你手动改这些日期有多崩溃!这种自定义的星期缩写确实有点特殊,但用Word的域代码或者简单宏就能彻底解决这个麻烦,不用再一个个找位置敲了。下面给你两种实用方法,你挑顺手的来:
方法一:用域代码实现(无需宏,适合新手)
这种方法不用启用宏,靠Word自带的域功能就能实现,修改起始日期后一键更新所有日期:
- 第一步:插入起始日期域
- 把光标定位到要放第一个日期的位置,按下
Ctrl+F9插入域专用的大括号(注意:不能手动输入{},必须用快捷键生成) - 在括号里输入这段代码,把
2023-03-18改成你需要的起始日期:{ SET startdate "2023-03-18" }{ SET weekday { startdate \@ "w" } }{ IF { weekday } = "7" "Sa " { IF { weekday } = "1" "Su " { IF { weekday } = "2" "M " { IF { weekday } = "3" "Tu " { IF { weekday } = "4" "W " { IF { weekday } = "5" "Th " { IF { weekday } = "6" "F " } } } } } } } & { startdate \@ "d/M/yy" } - 按下
F9更新域,就能看到符合你要求的起始日期格式了
- 把光标定位到要放第一个日期的位置,按下
- 第二步:插入后续连续日期
- 光标移到下一个需要放日期的位置,同样按
Ctrl+F9插入域括号 - 输入这段代码,其中
+1代表比起始日期晚1天,后续日期可以改成+2、+3以此类推:{ SET nextdate { = startdate + 1 } }{ SET weekday { nextdate \@ "w" } }{ IF { weekday } = "7" "Sa " { IF { weekday } = "1" "Su " { IF { weekday } = "2" "M " { IF { weekday } = "3" "Tu " { IF { weekday } = "4" "W " { IF { weekday } = "5" "Th " { IF { weekday } = "6" "F " } } } } } } } & { nextdate \@ "d/M/yy" } - 按
F9更新,就能得到下一个连续日期的正确格式
- 光标移到下一个需要放日期的位置,同样按
- 第三步:修改起始日期
以后要更新整个序列,只要找到第一个域,右键选择「编辑域」,把startdate后面的日期改成新的起始日期,然后全选文档按F9,所有日期都会自动同步成连续的自定义格式!
方法二:用VBA宏实现(一键更新,高效省心)
如果你经常需要更新这些日期,用宏会更方便,提前标记好位置,一键就能完成所有日期的填充:
- 第一步:创建宏
- 打开你的Word文档,按下
Alt+F11打开VBA编辑器 - 右键点击左侧面板里的文档名称,选择「插入」->「模块」
- 在弹出的代码窗口里粘贴这段代码:
Sub UpdateCustomDates() Dim startDate As Date Dim currentDate As Date Dim dateRange As Range Dim dayAbbrev As String ' 让用户输入起始日期 startDate = InputBox("请输入起始日期(格式:yyyy/mm/dd)", "设置起始日期") If startDate = 0 Then Exit Sub ' 用户取消输入则退出 ' 遍历文档中所有标记的日期位置(提前把要放日期的地方改成<<DATE>>) Set dateRange = ActiveDocument.Content With dateRange.Find .Text = "<<DATE>>" .Forward = True .Wrap = wdFindStop .MatchCase = False .MatchWholeWord = True Dim i As Integer i = 0 Do While .Execute currentDate = startDate + i ' 根据星期几获取自定义缩写 Select Case Weekday(currentDate) Case vbSaturday: dayAbbrev = "Sa" Case vbSunday: dayAbbrev = "Su" Case vbMonday: dayAbbrev = "M" Case vbTuesday: dayAbbrev = "Tu" Case vbWednesday: dayAbbrev = "W" Case vbThursday: dayAbbrev = "Th" Case vbFriday: dayAbbrev = "F" End Select ' 替换成自定义格式的日期 dateRange.Text = dayAbbrev & " " & Format(currentDate, "d/M/yy") i = i + 1 Loop End With End Sub - 保存文档时选择「启用宏的Word文档」(.docm格式),不然宏会失效
- 打开你的Word文档,按下
- 第二步:使用宏
- 先把文档中所有需要放日期的位置替换成
<<DATE>> - 按下
Alt+F8,选择UpdateCustomDates宏,点击「运行」 - 在弹出的窗口里输入起始日期(比如
2023/03/18),回车后所有标记的位置都会自动变成连续的自定义格式日期!
- 先把文档中所有需要放日期的位置替换成
备注:内容来源于stack exchange,提问作者Razzle




