2017-05-23 11 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

ありがとうございました!それは完璧に動作し、それらのオプションは他のものには非常に便利です。私が望むものが「Find」の下にあるとは決して推測できませんでした。彼らがそこに置く理由があるに違いないと確信しています...多分! :-)私はそれができるようになるとすぐに賞金を知っています。 – MoonBoots89

関連する問題