2017-05-23 1 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 개체의 :

차례로 많은 옵션과 편리한 Execute 방법을 제공
// 
// Summary: 
//  Returns a Microsoft.Office.Interop.Word.Find object that contains the criteria 
//  for a find operation. 
Find Find { get; } 

, 그리고 더 많은 (?!) 중요한 것은 비파괴적인 행동입니다.

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

관련 문제