Ich bin nicht sicher, wie dies mit .net funktionieren würde, aber hier ist ein Makro, das die Idee ausstellt. Das Objektmodell ist in der Regel dasselbe, daher glaube ich nicht, dass es schwierig sein wird, aus VBA in C# zu übersetzen.
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
Es funktioniert, indem geprüft wird, ob das Start des Lesezeichens oder Ende innerhalb jeder Bereichs der Tabelle ist (im gesamten Dokument). Es funktioniert, wenn sich ein Teil des Lesezeichens in einer Tabelle befindet.
Alternativ, wenn Sie herausfinden, sind benötigen, wenn das Lesezeichen ist ausschließlich in einer Tabelle für das Lesezeichens des Start überprüfen Sie würden größer als oder gleich den Starttisch und das Ende des Lesezeichens kleiner oder gleich dem Ende der Tabelle sein.
--Kris
Nice one. Ich werde es versuchen (nach dem Mittagessen). – Craig