2009-03-03 6 views
2

Ich verwende Word-Automatisierung, um einige Dokumente (yuk!) Zu manipulieren. Ich verwende diesen Befehl, um ein Lesezeichen in einem Dokument zu erhalten.Word-Automatisierung herauszufinden, ob ein Lesezeichen in einer Tabelle ist

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 einen einfachen Weg, das zu tun?

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

Antwort

1

Ich bin nicht sicher, wie dies mit .net funktionieren würde, aber hier ist ein Makro, das die Idee ausstellt. Das Objektmodell ist in der Regel dasselbe, daher glaube ich nicht, dass es schwierig sein wird, aus VBA in C# 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 Bereichs der Tabelle ist (im gesamten Dokument). Es funktioniert, wenn sich ein Teil des Lesezeichens in einer Tabelle befindet.

Alternativ, wenn Sie herausfinden, sind benötigen, wenn das Lesezeichen ist ausschließlich in einer Tabelle für das Lesezeichens des Start überprüfen Sie würden größer als oder gleich den Starttisch und das Ende des Lesezeichens kleiner oder gleich dem Ende der Tabelle sein.

--Kris

+0

Nice one. Ich werde es versuchen (nach dem Mittagessen). – Craig

Verwandte Themen