2013-02-14 48 views
0

我试图替换页脚中的部分文字。我使用Range.Find来查找文本并将其替换。在调试过程中,我设置了一些断点,以便在更改之前和之后检查页脚的Range.Text。它似乎在做它的工作。当我在Locals窗口中检查Rang.Text时,文本被改变了,我希望它改变。问题是它不更新文档。替换后文字不会更新

当我第二次尝试时,Range.Text仍然有我所做的更改,但它不会更新文档。

我试过这样做与文档的主体,它工作得很好。我不确定我在这里错过了什么。

我试图在一些保存的文件上。我必须解除页脚的保护,以便在我尝试查找和替换文本时不会给予例外。

任何人都知道我是否缺少某种安全性?

这里是我的代码:

Word.Range docRange = currentDoc.Sections[1].Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; 
docRange.Find.ClearFormatting(); 
docRange.Find.Text = find; 
docRange.Find.Replacement.ClearFormatting(); 
docRange.Find.Replacement.Text = replace; 

object replaceAll = Word.WdReplace.WdReplaceAll; 
docRange.Find.Execute(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
         Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
         ref replaceAll, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

如果您需要更多的代码,让我知道。

编辑:我试着将页脚移动到一个新文档,保存它,然后用调试器打开新文档,它似乎与新文档一起工作正常。尽管如此,仍然 不适用于原始文档。

回答

1

我能解决我的问题。我不太确定实际问题是什么,但我的猜测是页脚格式非常奇怪。所以我决定更改代码来遍历页脚部分的每个页脚,这似乎解决了我的问题。

这是我改变了代码,为其他人,希望它有助于:

foreach (Word.Section wordSection in currentDoc.Sections) 
{ 
    foreach (Word.HeaderFooter wordFooter in wordSection.Footers) 
    { 
     Word.Range docRange = wordFooter.Range; 

     docRange.Find.ClearFormatting(); 
     docRange.Find.Text = find; 
     docRange.Find.Replacement.ClearFormatting(); 
     docRange.Find.Replacement.Text = replace; 

     object replaceAll = Word.WdReplace.wdReplaceAll; 
     docRange.Find.Execute(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
        Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
        ref replaceAll, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
    } 
} 

如果有人能在为什么有必要做这些循环暗示,这将是有益的,但。