1

Wordファイルをコピーし、そのコピーを開き、ドキュメント内のいくつかの値を検索/置換して保存するアプリケーションが手元にあります。VB6またはC#のいずれかでOffice-Interopを使用すると正常に動作します。これで、エンドユーザーはcitrix-setupを使用でき、ここでドキュメントを開くコマンドを実行すると、呼び出し元のアプリケーションがクラッシュします。

例外をスローするまでのC#-example-codeを次に示します。

try
{
    app = new ApplicationClass();
    app.Visible = true;

    object fileName = @"C:\some_document.doc";
    object readOnly = false;
    object isVisible = app.Visible;
    object missing = System.Reflection.Missing.Value;

    doc = app.Documents.Open(ref fileName,
                ref missing, 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);
}
catch (Exception exception)
{
    MessageBox.Show(exception.Message);
}

メッセージは「保護されたメモリの読み取りまたは書き込みを試みました。これは、他のメモリが破損していることを示していることがよくあります。」です。エラーはOpen-Commandで発生します。

前に述べたように、WordがCitrixで起動されない限り、すべてが正常に実行されます。

さて、私のオプションは何ですか?ドキュメントを編集する既存のコードを使用できるように、なぜこれが発生するのか、何を変更できるのかを知りたいです。私はライブラリを使用して、Wordをまったく使用せずに検索と置換を行うので、使用できる製品のヒントを得ることができてうれしいです。私はここで何か派手なものを探しているわけではないので、私はたくさんのお金を投資したくありません。

ああ、これらはDOCファイルであり、DOCXではありません!

私は言及するのを忘れました:ExcelとInteropで同じようなことをすることはうまくいきます!それが私を最も悩ませているものです!

4

1 に答える 1

1

Office Interop は、MS では「サーバーのようなシナリオ」ではサポートされていません (Citrix は特殊なシナリオです) 。 q257757#kb2

オプションには、いくつかのライブラリ (無料および商用) が含まれます。たとえば、次のとおりです。

更新 - OP の編集後:

DOCMS は、サポートされていないことを示しています( Word も Excel もサポートされていません)。ではありませんDOCX)上記のような商用ライブラリにこだわっていると思います... Excelの場合、Aspose.Cells、Flexcel、SpreadsheetGearなどの商用オプションも利用できます...

于 2011-10-06T12:26:26.857 に答える