Domanda

Sto usando Word Automation per manipolare alcuni documenti (yuk!). Sto usando questo comando per ottenere un segnalibro all'interno di un documento.

Object oBookmark = "MyBookmarkName";
Range oRngoBookmark = wordDocument.Bookmarks.get_Item(ref oBookmark).Range;

Quello che voglio scoprire è se quel segnalibro si trova in una tabella nel documento o meno. C'è un modo semplice per farlo?

Sto chiamando questo codice da C # in un'applicazione .NET.

È stato utile?

Soluzione

Non sono sicuro di come questo funzionerebbe con .net, ma ecco una macro che mostra l'idea. Il modello a oggetti tende ad essere lo stesso, quindi non credo che sarà difficile tradurre in 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

Funziona controllando se l'inizio o la fine del segnalibro è all'interno dell'intervallo di ogni tabella (nell'intero documento). Funzionerà se qualsiasi parte del segnalibro si trova all'interno di una tabella.

In alternativa, se devi scoprire se il segnalibro è esclusivamente all'interno di una tabella, verifica che l'inizio del segnalibro sia maggiore o uguale all'inizio della tabella < em> e la fine del segnalibro deve essere minore o uguale alla fine della tabella.

- Kris

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top