1

フィールドがネストされている場合、問題があります。

foreach (Word.Field field in this.Application.ActiveDocument.Fields)
        {
            field.Update();
            text = field.Result.Text;

        }

上記のコードは機能しません。

プロセスは開始されますが、システムをハングアップさせる無限ループまたはその他のプロセスに陥ります。

考えてみると、フィールドを更新すると、フィールド コレクションに影響を与える可能性があると推測できます。したがって、ループは失敗します。

これを実装するアイデアはありますか?

PS すべてのフィールドを更新する Document.UpdateFields() メソッドがあることは知っています。ただし、これを使用できない理由があり、特定のフィールド タイプのみを更新する必要があります。

謝罪いたします!ネストされたフィールドの例を示すつもりでしたが、誰か (ジャック) をグースチェイスに送る前に、もう少しテストしようとしていました。

待って待って待って、2、3分で終わりました。最後のフィールドの後、次のメッセージでクラッシュしました。

オブジェクトが削除されました。

エラーは、ループ内の次の行から生成されました。

文字列テキスト = field.Code.Text;

テンプレートは、データベース接続なしでテストしているため、見つからないマージフィールドでテストされています。それがすべてのフィールドを通過し、その日の終わりにまさに OUTER IF フィールドの結果が「エラー! 参照元が見つかりません」になるというのは奇妙ですが、説明できます。しかし、なぜこれが起こるのかはまだわかりません。

また、document.Fields.Update() の呼び出しが約 1 秒で同じことを行い、上記のエラーが発生しないのに、ループに 3 分かかる理由もわかりません。

繰り返しますが、お詫び申し上げます。ループ内での更新が doc.fields.update() の呼び出しよりも大幅に遅くなるとは考えていませんでした。

4

0 に答える 0