Word中无法解析通配符日期格式

问题描述 投票:0回答:1

在此循环中(iii = 12至1步骤-1),. text通配符根本找不到任何日期:

With Selection.FInd
    .Forward = True
    .Wrap = WdFindStop
    .text= "([0-9]{1,2}] " & Mon_th(iii) & ([0-9]{4}])"
    .Execute
End With

但是在此循环中,它会:

With ActiveDocument.Content
With.Find
  .Forward = True
  .Wrap = WdFindStop
  .text= "([0-9]{1,2}] " & Mon_th(iii) & ([0-9]{4}])"
End With

[我认为我需要使用第一个版本,因为我想在每次发现日期时都插入一条注释,但无法弄清楚为什么它可以与某个版本一起使用,而不能与另一个版本一起使用。

感谢所有帮助,谢谢。

此外,为什么.text输入时会有一个初始大写字母,但是之后立即变为小写?

date ms-word wildcard
1个回答
0
投票

您当然可以在没有该循环的情况下执行此操作。例如:

.Text = "<[0-9]{1,2} [JFMASOND][abceghilmnoprstuvy]{2,8} [12][0-9]{3}>"

或:

.Text = "<[0-9]{1,2} [JFMASOND][abceglnoprtuvy]{2} [12][0-9]{3}>"

如果需要其他注释,可以通过添加循环中的Select Case语句来实现。因此:

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "<[0-9]{1,2} [JFMASOND][abceglnoprtuvy]{2} [12][0-9]{3}>"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute
  End With
  Do While .Find.Found
    Select Case Split(.Text, " ")(1)
      Case "Jan": .Comments.Add .Duplicate, "Comment for Jan"
      Case "Feb": .Comments.Add .Duplicate, "Comment for Feb"
      Case "Mar": .Comments.Add .Duplicate, "Comment for Mar"
      Case "Apr": .Comments.Add .Duplicate, "Comment for Apr"
      Case "May": .Comments.Add .Duplicate, "Comment for May"
      Case "Jun": .Comments.Add .Duplicate, "Comment for Jun"
      Case "Jul": .Comments.Add .Duplicate, "Comment for Jul"
      Case "Aug": .Comments.Add .Duplicate, "Comment for Aug"
      Case "Sep": .Comments.Add .Duplicate, "Comment for Sep"
      Case "Oct": .Comments.Add .Duplicate, "Comment for Oct"
      Case "Nov": .Comments.Add .Duplicate, "Comment for Nov"
      Case "Dec": .Comments.Add .Duplicate, "Comment for Dec"
    End Select
    .Collapse wdCollapseEnd
    .Find.Execute
  Loop
End With
Application.ScreenUpdating = True
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.