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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top