Vba 搜索表格旁边的标题样式时,查找失败

Vba 搜索表格旁边的标题样式时,查找失败,vba,ms-word,Vba,Ms Word,我需要在一个大文档中执行一个Find,以修复“Heading 1”标题从大写到title的大小写。我编写了以下代码来演示其用途(包括一些帮助调试的丑陋步骤): 我遇到的问题是:如果一个表紧跟在标题后面,那么查找就会卡在当前标题上,无法继续。在添加调试行之前,这将挂起Word 该代码可以很好地处理表格不在标题后面的文本。但是,我不控制文档的格式,也不能假设包含空白段落。我确实发现这确实有帮助,但我不能预先假定这一点 我会使用findall和Replacement属性,但它不支持这种情况。此外,我

我需要在一个大文档中执行一个Find,以修复“Heading 1”标题从大写到title的大小写。我编写了以下代码来演示其用途(包括一些帮助调试的丑陋步骤):

我遇到的问题是:如果一个表紧跟在标题后面,那么查找就会卡在当前标题上,无法继续。在添加调试行之前,这将挂起Word

该代码可以很好地处理表格不在标题后面的文本。但是,我不控制文档的格式,也不能假设包含空白段落。我确实发现这确实有帮助,但我不能预先假定这一点

我会使用findall和Replacement属性,但它不支持这种情况。此外,我尝试使用Goto将指针推到标题之外,但没有效果


可以做些什么?这是虫子吗?我是否应该检测下一个表并采取措施?如果是这样,应该采取什么行动?

简单:将范围折叠到其末端,如下所示:

Sub FixHeadings()
Dim Resp
With ActiveDocument.Range
  With .Find
    .Format = True
    .Forward = True
    .Style = wdStyleHeading1
  End With
  Do While .Find.Execute = True
    .Case = wdTitleWord
    Resp = MsgBox(.Text & vbNewLine & vbNewLine & "Text was found, continue?", vbQuestion & vbYesNoCancel)
    If Resp = vbNo Then
      Exit Do
    ElseIf Resp = vbCancel Then
        'foo = True
    End If
    If .End = ActiveDocument.Range.End Then Exit Do
    .Collapse wdCollapseEnd
  Loop
End With
End Sub

非常感谢。这让我99%的时间都在那里。我有一个有趣的小故障。即使文档不是以这种方式开始的,并且我导入的子文档也不是以标题1结束的,但结尾似乎出现了标题1。不过,我已经解决了这个问题。请参阅代码编辑(If.End=ActiveDocument.Range.End,然后退出Do)以处理文档结尾的样式。
Sub FixHeadings()
Dim Resp
With ActiveDocument.Range
  With .Find
    .Format = True
    .Forward = True
    .Style = wdStyleHeading1
  End With
  Do While .Find.Execute = True
    .Case = wdTitleWord
    Resp = MsgBox(.Text & vbNewLine & vbNewLine & "Text was found, continue?", vbQuestion & vbYesNoCancel)
    If Resp = vbNo Then
      Exit Do
    ElseIf Resp = vbCancel Then
        'foo = True
    End If
    If .End = ActiveDocument.Range.End Then Exit Do
    .Collapse wdCollapseEnd
  Loop
End With
End Sub