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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top