Я не уверен, как это сработает с .net, но вот макрос, который демонстрирует эту идею. Объектная модель, как правило, одинакова, поэтому я не думаю, что будет сложно перевести ее на C # из VBA.
Sub BookmarksInTables()
Dim aTable As Table
Dim aBookmark As Bookmark
For Each aBookmark In ActiveDocument.Bookmarks
For Each aTable In ActiveDocument.Tables
'If start of book mark is inside the table range or
' the end of a book mark is inside the table range then YES!
If (aBookmark.Range.Start >= aTable.Range.Start _
And aBookmark.Range.Start <= aTable.Range.End) _
Or (aBookmark.Range.End >= aTable.Range.Start _
And aBookmark.Range.End <= aTable.Range.End) Then
MsgBox aBookmark.Name + " is inside a table"
Else
MsgBox aBookmark.Name + " is not inside a table"
End If
Next
Next
End Sub
Работает, проверяя, находится ли начало или конец закладки в пределах диапазона каждой таблицы (во всем документе).
Это будет работать, если какая-либо часть закладки находится внутри таблицы.
В качестве альтернативы, если вам нужно выяснить, является ли закладка исключительно внутри таблицы, вы хотите проверить, чтобы начало закладки было больше или равно началу таблицы и конец закладки должен быть меньше или равен концу таблицы.
- Kris