我正在尝试替换页脚中的部分文本。我正在使用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);
如果您需要更多代码,请与我们联系。
编辑:我尝试将页脚移动到一个新文档,保存它然后用调试器打开新文档,它似乎与新文档一起正常工作。仍然 但不适用于原始文档。答案 0 :(得分: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);
}
}
如果有人可能会暗示为什么有必要进行这些循环,那么它会有所帮助。