2017-05-23 33 views
1

我需要從Word文檔頁腳中刪除一些也包含字段的文本(例如頁碼)。很簡單,對吧?設置Range.Text而不關閉字段?

但是,當我更新範圍內的文本時,它會打破它包含的字段。例如,頁碼字段只是一個數字(而不是一個保持最新的字段)。

有沒有辦法改變範圍內的文本而不影響它包含的字段?

這裏是我當前的代碼:

string wordToRemove = "foo";    

foreach (Section section in doc.Sections) 
{ 
    foreach (HeaderFooter footer in section.Footers) 
    { 
     if (footer.Range.Text.Contains(wordToRemove)) 
      footer.Range.Text = footer.Range.Text.Replace(wordToRemove, ""); 
    } 
} 
+0

讓我只是確保我正確理解。您是從現有模板開始工作,還是正在通過文檔查看單詞? (插入/評估)? – confusedandamused

+0

@confusedandamused代碼正在尋找要替換的活動文檔頁腳中的文本。該方案是用戶將在他們的文檔上工作,並將使用我的插件來更改活動文檔中的頁腳。 – MoonBoots89

回答

3

簡單,對不對?

事實上 - 只要你知道Find財產Range對象:

// 
// Summary: 
//  Returns a Microsoft.Office.Interop.Word.Find object that contains the criteria 
//  for a find operation. 
Find Find { get; } 

這又提供了一個方便Execute方法有很多的選擇,和更多的(?!)重要的是,具有所需的非破壞性行爲:

string wordToRemove = "foo"; 

foreach (Section section in doc.Sections) 
{ 
    foreach (HeaderFooter footer in section.Footers) 
    { 
     footer.Range.Find.Execute(FindText: wordToRemove, ReplaceWith: "", Replace: WdReplace.wdReplaceAll); 
    } 
} 
+1

謝謝!它完美地工作,這些選項將會對其他事情非常有用。我從來沒有想到,我想要的是在「查找」下。我相信他們必須有一個很好的理由......也許! :-)只要它能讓我知道賞金。 – MoonBoots89