0

フッターのテキストの一部を置き換えようとしています。Range.Find を使用してテキストを検索し、置換しています。デバッグ中にいくつかのブレークポイントを設定したので、変更前後のフッターの Range.Text を確認できます。それはその仕事をしているようです。[ローカル] ウィンドウで 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);

さらにコードが必要な場合は、お知らせください。

編集:フッターを新しいドキュメントに移動して保存し、デバッガーで新しいドキュメントを開こうとしましたが、新しいドキュメントで問題なく動作するようです。ただし、元のドキュメントではまだ機能しません。

4

1 に答える 1

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);
    }
}

なぜこれらのループを実行する必要があるのか​​ を誰かが示唆できれば、それは役に立ちます.

于 2013-02-14T21:32:37.130 に答える