Автоматизация Word выяснить, есть ли закладка в таблице - PullRequest
2 голосов
/ 04 марта 2009

Я использую Word Automation для манипулирования некоторыми документами (юк!). Я использую эту команду для получения закладки в документе.

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

Что я хочу узнать, так это то, находится ли эта закладка в таблице в документе или нет. Есть ли простой способ сделать это?

Я вызываю этот код из C # в приложении .NET.

1 Ответ

1 голос
/ 04 марта 2009

Я не уверен, как это сработает с .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

...