Frage

Ich verwende Word Automation einige Dokumente zu manipulieren (igitt!). Ich verwende diesen Befehl ein Lesezeichen in einem Dokument zu erhalten.

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

Was ich will, ist, um herauszufinden, ob das Lesezeichen in einer Tabelle im Dokument ist oder nicht. Gibt es eine einfache Möglichkeit, das zu tun?

Ich rufe diesen Code von C # in einer .NET-Anwendung.

War es hilfreich?

Lösung

Ich bin nicht sicher, wie das mit .net funktionieren würde, aber hier ist ein Makro, das die Idee zeigt. Das Objektmodell neigt das gleiche zu sein, so glaube ich nicht, es wird schwer zu C # von VBA zu übersetzen.

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

Es funktioniert, indem geprüft wird, ob das Start des Lesezeichens oder Ende innerhalb jeder Tabelle des Bereichs (im gesamten Dokument). Es wird funktionieren, wenn ein Teil der Lesezeichen innerhalb einer Tabelle ist.

Alternativ, wenn Sie benötigen, um herauszufinden, ob das Lesezeichen ist ausschließlich in einer Tabelle würden Sie für das Lesezeichen der Start zu überprüfen, um größer als oder gleich dem Start der Tabelle < em> und das Ende des Lesezeichens auf weniger als oder gleich das Ende der Tabelle.

- Kris

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top