Automatización de palabras para averiguar si un marcador está en una tabla.
-
03-07-2019 - |
Pregunta
Estoy utilizando Word Automation para manipular algunos documentos (¡yuk!). Estoy usando este comando para obtener un marcador dentro de un documento.
Object oBookmark = "MyBookmarkName";
Range oRngoBookmark = wordDocument.Bookmarks.get_Item(ref oBookmark).Range;
Lo que quiero averiguar es si ese marcador está en una tabla en el documento o no. ¿Hay una manera fácil de hacer eso?
Estoy llamando a este código desde C # en una aplicación .NET.
Solución
No estoy seguro de cómo funcionaría esto con .net, pero aquí hay una macro que muestra la idea. El modelo de objetos tiende a ser el mismo, así que no creo que sea difícil traducirlo a C # desde 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
Funciona al verificar si el inicio o final del marcador está dentro del rango de cada tabla (en todo el documento). Funcionará si alguna parte del marcador está dentro de una tabla.
Alternativamente, si necesita averiguar si el marcador está exclusivamente dentro de una tabla, querría verificar que el inicio del marcador sea mayor o igual al inicio de la tabla < em> y el final del marcador debe ser menor o igual al final de la tabla.
--Kris