2013-08-01 45 views
4

我在控制檯應用程序中使用Microsoft.Office.Interop.Word命名空間以從MS Word文檔獲取表單數據。在這個MSWord文檔中,每個字段都被分配了一個我正在用作ID的書籤。獲取字段書籤

我希望能夠檢索字段的值的書籤,並將其存儲在dictionary.I只能夠獲得每個字段的值,但不是書籤和字段。

有沒有辦法讓wdField.Result.Bookmark得到字段的書籤?我看着MSDN documentation,但我很難做到這一點。下面是我用列舉foreach循環:

 foreach (Field wdField in oWordDoc.Fields) 
      { 
      wdField.Select(); 
      string fieldText = wdField.Result.Text 
      Console.WriteLine(fieldText); 
      //string fieldBookMark = wdField.Result.BookMark 
      } 
+2

書籤屬於'書籤collection'。要獲得它的文本,你需要參考'書籤(名稱).range.text' –

+0

這基本上回答了我的問題。 – GoofyBall

回答

3

KazJaw是正確的:如果你把所有的目標文本「書籤」,你可以依靠只是BookMarks。示例代碼:

foreach (Bookmark bookMark in oWordDoc.Bookmarks) 
{ 
    string bmName = bookMark.Name; 
    Range bmRange = bookMark.Range; 
    string bmText = bmRange.Text; 
} 

或者:

Range bmRange = oWordDoc.Bookmarks["bookmark name"].Range; 
+0

經過測試和工作。我感到很難受,因爲他的回答我也不能給予KazJaw代表。但你們都解決了我的問題。我不知道我書籤對象可能包含文本。現在我明白了。 謝謝,先生。 – GoofyBall

+0

@GoofBall沒問題。我想KazJaw並不在乎太多(點並不是生活中的所有東西:))。當你發表評論並且之後沒有寫出答案時(評論超過半小時)是因爲你只是想分享這個想法,但沒有進入確切的問題(他的回答是通用的,對於VB/VBA而言比C#)。有時候這已經足夠了:如果你在我的回答之前寫下你的評論「......回答我的問題」,我就不會寫任何東西。 – varocarbas

+0

@GoofBall,沒關係,這次我懶得把它作爲一個完整的答案,但Varocarbas第一個這樣做,他說得很對,很清楚。 –