automação palavra descobrir se um marcador está em uma tabela
-
03-07-2019 - |
Pergunta
Eu estou usando automação do Word para manipular alguns documentos (yuk!). Eu estou usando este comando para obter um marcador dentro de um documento.
Object oBookmark = "MyBookmarkName";
Range oRngoBookmark = wordDocument.Bookmarks.get_Item(ref oBookmark).Range;
O que eu quero saber é se esse marcador está em uma tabela no documento ou não. Existe uma maneira fácil de fazer isso?
Eu estou chamando este código de C # em um aplicativo .NET.
Solução
Eu não estou certo como isso funcionaria com .net, mas aqui está uma macro que exibe a idéia. O modelo de objeto tende a ser o mesmo, então eu não acho que vai ser difícil de traduzir para C # da 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
Ele funciona através da verificação se o início ou o fim do marcador está dentro de gama de cada tabela (em todo o documento). Ele vai funcionar se qualquer parte do marcador está dentro de uma tabela.
Como alternativa, se você está precisando para descobrir se o marcador é exclusivamente dentro de uma tabela que você gostaria de verificar se há início do marcador a ser maior ou igual a inicial da tabela < em> e end do marcador a ser menor ou igual ao fim da tabela.
- Kris