2009-03-03 41 views
2

我正在使用Word Automation來操作一些文檔(yuk!)。我正在使用此命令在文檔中獲取書籤。Word自動找出書籤是否在表格中

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

我想知道的是如果該書籤在文檔中的表中或沒有。有沒有簡單的方法來做到這一點?

我在.NET應用程序中從C#調用此代碼。

回答

1

我不確定這將如何解決.net,但這裏是一個展示這個想法的宏。對象模型往往是相同的,所以我認爲從VBA轉換到C#並不是很難。

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 

它通過檢查書籤的開始或結束位於每個表格範圍內(整個文檔中)來工作。 如果書籤的任何部分位於表格的內部,它將起作用。

另外,如果你需要找出如果書籤專門表裏面,你會要檢查書籤的起始位置爲大於或等於表的開始書籤的結束小於或等於表格的結尾。

- 克里斯

+0

不錯的一個。我會放棄它(午餐後)。 – Craig 2009-03-04 01:16:41