Question

J'utilise Word Automation pour manipuler certains documents (beurk!). J'utilise cette commande pour obtenir un signet dans un document.

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

Ce que je veux savoir, c'est si ce signet est dans un tableau du document ou non. Y a-t-il un moyen facile de le faire?

J'appelle ce code à partir de C # dans une application .NET.

Était-ce utile?

La solution

Je ne suis pas sûr de savoir comment cela fonctionnerait avec .net, mais voici une macro qui présente l'idée. Le modèle objet a tendance à être le même, je ne pense donc pas qu'il sera difficile de traduire en C # à partir de 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

Cela fonctionne en vérifiant si le début ou la fin du signet se trouve dans la plage de chaque table (dans le document entier). Cela fonctionnera si une partie du signet se trouve à l'intérieur d'un tableau.

Si vous souhaitez savoir si le signet se trouve exclusivement dans un tableau, vous devez vérifier si le début du signet est supérieur ou égal à son début. < em> et la fin du signet soit inférieure ou égale à la fin de la table.

- Kris

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top