我在Word中有一个宏来搜索文档,然后在找到时执行操作。
我想检查Found文本是否在目录中,但它似乎并不喜欢我的代码:
Sub test()
Dim myDoc As Word.Document
Dim oRng As Word.Range, rng As Word.Range, rngXE As Word.Range
Dim addDefinition$, editedDefinition$ ',findText$
Dim rngEdited
Dim bFound As Boolean
Dim findText() As Variant
Dim y&
Set myDoc = ActiveDocument
bFound = True
Call Clear_Index
findText = Array("whatever", "whatever:", "Whatever:")
For y = LBound(findText) To UBound(findText)
'Loop through the document
Set oRng = myDoc.Content
Set rngXE = oRng.Duplicate
With oRng.Find
.ClearFormatting
.ClearAllFuzzyOptions
.Text = findText(y)
.MatchCase = False
.Wrap = wdFindStop
End With 'orng.find
Do While bFound
bFound = oRng.Find.Execute
If bFound Then
Set rngXE = oRng.Paragraphs(1).Range.Duplicate
rngXE.Select
'
' THIS IS WHERE I NEED HELP :(
If rngXE.Fields.Type = wdFieldTOC Then ' This doesn't work.
MsgBox (" In a TOC!")
End If
End If
End Sub
它抛出
编译错误:找不到方法或数据成员
我看过
的循环For each fld in myDoc.Fields
If fld.Type = wbFieldTOC Then
'Do something
end if
next fld
哪项工作 - 我很难理解找到特定文字的字段。
答案 0 :(得分:1)
InRange
方法可用于发现一个范围是否位于另一个范围内。由于TableOfContents
对象有一个Document
集合,因此它非常简单,可以获得该范围,并测试其中是否有其他ange(偶数Selection.Range
)。
以下代码段假定文档具有TOC并且您对第一个TOC感兴趣。如果您的情况不是这样,您需要进行一些检查以确保参考是正确的TOC:
oRng.InRange(ActiveDocument.TablesOfContents(1).Range)