3

Microsoft Windows のドイツ語版にのみ存在すると思われるバグがサービスに見つかりました。コードは次のとおりです。

public Application OpenApplicationWithFile(object filename)
{
    object _missing = System.Reflection.Missing.Value;
    Application objWord = new Application();
    objWord.DisplayAlerts = WdAlertLevel.wdAlertsNone;
    objWord.Application.Visible = false;
    objWord.Documents.Open(ref filename, ref _readOnly, ref _missing, ref _missing, ref _missing,
                                   ref _missing,
                                   ref _missing, ref _missing, ref _missing, ref _missing, ref _isVisible,
                                   ref _missing,
                                   ref _missing, ref _missing,
                                   ref _missing, ref _missing);
    return objWord;
}

デバッガーはDocuments.Open()呼び出しでハングし、例外やエラーを発生させることなく待機します。イベント ログを確認しましたが、次の情報しか見つかりませんでした。

Das Dokument 'convert1002.doc' verursachte ein Problem, als zuletzt geoffnet wurde. Möchten Sie mit dem Öffnen fortfahren?

これは、グーグル翻訳を介して次のように翻訳されます。

ドキュメント 'convert1002.doc' は、最後に開いたときに重大なエラーを引き起こしました。引き続き開きますか?

したがって、Word がユーザーに何かを尋ねたように見えますが、それは目に見えないため、ユーザーは正確に「はい」または「いいえ」をクリックすることはできません。objWord.Application.Visible の値をtrueに変更しても何も変わりません。プロセスという単語はまだ見えません。したがって、私の質問は、このシナリオの理由とそれを修正する方法を調査する方法です。ご意見ありがとうございます。

4

2 に答える 2

3

このエラーはすべての言語バージョンで発生する可能性があり、使用する Word バージョンによっては、非表示のダイアログを簡単に防止できない場合があります。どのバージョンの Word を使用していますか?

しかし、最初に、パラメーターが 1 つずれています (と思います)。ReadOnly は 3 番目のパラメーターであり、それが _isVisible が機能しない理由です。

objWord.Application.Visible を true に設定しようとしましたが、うまくいきました。多分何か他のものも間違っていますか?

簡単な解決策の 1 つは、OpenAndRepair を true に設定することです。その 13. isVisible のすぐ後ろにあるパラメータです。

それ以外の場合は、次のリンクをご覧ください: How To Dismiss a Dialog Box Displayed by an Office Application with Visual Basic .

于 2013-09-11T11:12:54.293 に答える
2

この問題は、ここで説明されているものと似ている可能性がありますInterop.Word Documents.Open スタック

ドイツ語版を使用してファイルを開こうとすると、同じファイルを開こうとしますか?

別のファイルを開いてみてください。

設定を試すその他のこと:

objWord.DisplayAlerts = WdAlertLevel.wdAlertsAll;

AND/OR Uwe が述べたように、openandrepair を true に設定してみてください。

Object obOpenAndRepair = true;
Document doc = word.Documents.Open(ref filename, ref _readOnly,
                    ref _missing, ref _missing, ref _missing, ref _missing, ref _missing,
                    ref _missing, ref _missing, ref oMissing,  ref _missing,ref _isVisible,
                    ref obOpenAndRepair, ref _missing, ref _missing, ref _missing);

これがお役に立てば幸いです。

于 2013-09-12T06:59:20.107 に答える