Word automation узнайте, есть ли закладка в таблице
-
03-07-2019 - |
Вопрос
Я использую Word Automation для манипулирования некоторыми документами (фу!).Я использую эту команду, чтобы получить закладку внутри документа.
Object oBookmark = "MyBookmarkName";
Range oRngoBookmark = wordDocument.Bookmarks.get_Item(ref oBookmark).Range;
Что я хочу выяснить, так это есть ли эта закладка в таблице документа или нет.Есть ли простой способ сделать это?
Я вызываю этот код из C # в приложении .NET.
Решение
Я не уверен, как это будет работать с .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
Это работает путем проверки, находится ли начало или конец закладки внутри диапазона каждой таблицы (во всем документе).Это будет работать, если какая-либо часть закладки находится внутри таблицы.
В качестве альтернативы, если вам нужно выяснить, является ли закладка исключительно внутри таблицы вы хотели бы проверить, чтобы начало закладки было больше или равно началу таблицы и конец закладки должен быть меньше или равен концу таблицы.
--Крис