我正在使用Word Automation来操作一些文档(yuk!)。我正在使用此命令在文档中获取书签。

Object oBookmark = "MyBookmarkName";
Range oRngoBookmark = wordDocument.Bookmarks.get_Item(ref oBookmark).Range;

我想知道的是,该书签是否在文档的表格中。有没有一种简单的方法可以做到这一点?

我在.NET应用程序中从C#调用此代码。

有帮助吗?

解决方案

我不确定这会如何与.net一起使用,但这是一个展示这个想法的宏。对象模型趋于相同,所以我认为从VBA转换为C#并不困难。

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

它的工作原理是检查书签的开头或结尾是否在每个表的范围内(在整个文档中)。 如果书签的任何部分位于表格内,它将起作用。

或者,如果您需要查看表格中的书签是否 ,您可能需要检查书签的开头是否大于或等于表格的开头 < em>和 书签的结尾小于或等于表的结尾。

- 克里斯

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top