You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Word 2007自定义缩写日期序列自动填充解决方案求助

Word 2007自定义缩写日期序列自动填充解决方案求助

嘿,我完全懂你手动改这些日期有多崩溃!这种自定义的星期缩写确实有点特殊,但用Word的域代码或者简单宏就能彻底解决这个麻烦,不用再一个个找位置敲了。下面给你两种实用方法,你挑顺手的来:

方法一:用域代码实现(无需宏,适合新手)

这种方法不用启用宏,靠Word自带的域功能就能实现,修改起始日期后一键更新所有日期:

  • 第一步:插入起始日期域
    1. 把光标定位到要放第一个日期的位置,按下Ctrl+F9插入域专用的大括号(注意:不能手动输入{},必须用快捷键生成)
    2. 在括号里输入这段代码,把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" }
      
    3. 按下F9更新域,就能看到符合你要求的起始日期格式了
  • 第二步:插入后续连续日期
    1. 光标移到下一个需要放日期的位置,同样按Ctrl+F9插入域括号
    2. 输入这段代码,其中+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" }
      
    3. F9更新,就能得到下一个连续日期的正确格式
  • 第三步:修改起始日期
    以后要更新整个序列,只要找到第一个域,右键选择「编辑域」,把startdate后面的日期改成新的起始日期,然后全选文档按F9,所有日期都会自动同步成连续的自定义格式!

方法二:用VBA宏实现(一键更新,高效省心)

如果你经常需要更新这些日期,用宏会更方便,提前标记好位置,一键就能完成所有日期的填充:

  • 第一步:创建宏
    1. 打开你的Word文档,按下Alt+F11打开VBA编辑器
    2. 右键点击左侧面板里的文档名称,选择「插入」->「模块」
    3. 在弹出的代码窗口里粘贴这段代码:
      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
      
    4. 保存文档时选择「启用宏的Word文档」(.docm格式),不然宏会失效
  • 第二步:使用宏
    1. 先把文档中所有需要放日期的位置替换成<<DATE>>
    2. 按下Alt+F8,选择UpdateCustomDates宏,点击「运行」
    3. 在弹出的窗口里输入起始日期(比如2023/03/18),回车后所有标记的位置都会自动变成连续的自定义格式日期!

备注:内容来源于stack exchange,提问作者Razzle

火山引擎 最新活动