1

Word の一部のフィールドにエラーがあるかどうかを確認するにはどうすればよいですか? 他の章や画像への参照が多数含まれる大きなドキュメントがあります。Error! Reference Source Not Foundこれらの章または画像がドキュメントにない場合、参照の代わりにそれらの参照を含むフィールドが表示されます。

問題は、ファイルのロケールや言語に関係なく、これらの参照エラーをチェックするアルゴリズムを作成する必要があることです。問題は、このフィールド エラーが、その単語を使用するユーザーのシステムの言語にローカライズされていることです。

これどうやってするの?Fieldソースが利用可能かどうかを確認するために使用できるプロパティはありますか?

現在、フィールドの結果テキストを使用して、フィールドのエラーをチェックしています。

Int32 fieldErrors = 0;
foreach (Word.Field field in doc.Fields)
{
    field.Update();
    if (field.Result.Text.StartsWith("Error!"))
        ++fieldErrors;
}

残念ながら、これは英単語インスタンスでのみ機能します。

4

1 に答える 1

2

Field型のドキュメントでは、FieldインスタンスにはUpdate()を返すメソッドがあることがわかりますbool。ドキュメントには、戻り値のセマンティックな意味は記載されていませんが、短い実証研究を行うことで、更新が成功した場合と更新が成功しなかった場合にメソッドが戻ることがわかりましたtrue。これは、エラーのあるフィールドを見つけるために、次のようなことができることを意味します:Update()false

var fieldsWithErrors = new List<Field>();
foreach (Field field in document.Fields)
{
    if(!field.Update())
        fieldsWithErrors.Add(field);
}

...またはLINQでより短い:

var fieldsWithErrors = document.Fields.Cast<Field>().Where(field => !field.Update()).ToList();

もう 1 つの (そしてより高速な) 方法は、コレクションUpdate()によって公開されるメソッドを使用することです。Fields

var indexOfFirstError = document.Fields.Update();

... メソッドは、エラーのある最初のフィールドのインデックスを返します。エラーが見つからない場合、メソッドは 0 を返します。

完全なドキュメントについては、MSDN リファレンスを参照してください。

于 2012-10-06T12:49:27.267 に答える