2

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

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

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

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

4

1 回答 1

1

我不确定这将如何与 .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

它通过检查书签的开始或结束是否在每个表的范围内(在整个文档中)来工作。如果书签的任何部分在表格内,它将起作用。

或者,如果您需要确定书签是否在表格内,您需要检查书签的开始是否大于或等于表格的开始以及书签的结束是否小于或等于表格的结束.

——克里斯

于 2009-03-04T01:08:46.033 回答