Я не уверен, как это сработает с .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
Nice one. Я отдам его (после обеда). – Craig