2014-10-28 28 views
0

我试图列出文档中的“标题1”样式的每个实例(最终将它们列在窗体上的组合框中)。列出“标题1”样式的所有实例

以下代码似乎找到“标题1”的实例,因为在即时窗口中列出的条目数是正确的,但.text不返回任何内容。

我在做什么错?谢谢。

Dim blnFound As Boolean 
Dim i as Integer 

i = 1 

With ThisDocument.Range.Find 
    .Style = "Heading 1" 

    Do 
     blnFound = .Execute 
     If blnFound Then 
      Debug.Print i & " " & .Text 
      i = i + 1 
     Else 
      Exit Do 
     End If 
    Loop 
End With 

回答

2

我不相信你的对象有一个.Text属性。选择具有.Text属性。试试这个:

Sub FindHeadings() 
' October 28, 2014 
Dim blnFound As Boolean 
Dim i As Integer 
i = 1 
' Set up the find conditions 
Selection.HomeKey Unit:=wdStory 
Selection.Find.ClearFormatting 
Selection.Find.Style = ActiveDocument.Styles("Heading 1") 
With Selection.Find 
    .Text = "" 
    .Replacement.Text = "" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = True 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
Selection.Find.Execute 
Selection.MoveLeft Unit:=wdCharacter, count:=1 

'Repeat while you find the style 
blnFound = True 
While blnFound 
    With Selection.Find 
     .Execute 
     If .Found = True Then 
       Debug.Print i & " " & Selection.Text 
       i = i + 1 
      ' Move to the next character 
      Selection.MoveRight Unit:=wdCharacter, count:=1 
     Else 
      Debug.Print "Done" 
      blnFound = False 
     End If 
    End With 
Wend 
End Sub 
+0

谢谢,这是行得通的。现在我不幸地遇到了一个新问题 - 我的文档中有一个目录,您的解决方案正在选择该文档中的标题。你知道一种防止这种情况的方法吗?谢谢。 – 2014-10-29 11:17:16

+0

我不知道您的目录的标题是否也使用标题1样式?如果是这样,我建议为该标题使用(或创建)不同的样式,这样宏不会被拾取。 (注意,我刚刚在代码中增加了一行代码)。 – Jeff1265344 2014-10-30 17:37:16

相关问题