L'automazione delle parole scopre se un segnalibro è in una tabella
-
03-07-2019 - |
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.
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