3

結果を Excel の 2-D セルにプロットしますか? C#、.NET、Excel-DNA、Add-In Express RTD、

ありがとう

編集http://excel-dna.net/2011/01/30/resizing-excel-udf-result-arrays/を試しましたが、うまくいきません。私はこのような sth が欲しい MyUDF(param1, param2) は、param1 の長さに基づいてテーブルのような 2-D 配列を返します。 [3,2] を配列し、結果を 3 行 2 列で表示します。

また、Excel ExcelDNA C# を試しました / Bloomberg BDH() の動作をコピーしてみました (Web 要求の後に Array を書き込みます)。正常に動作します。しかし、私の要件は、backgroundworker が RTD 関数を呼び出すことです。RTD 関数は複数ステップのプロセスです。最初にログイン (非同期、次にサブスクライブ (非同期)) し、backgroundworker から xlcall.RTD を呼び出すと、accessinviolation 例外が発生します。

4

1 に答える 1

1

Excel UDF と RTD は受動的なものです。ユーザーが数式を入力すると、Excel は UDF (RTD 関数) を呼び出して数式を計算し、呼び出し元のセルに結果を返します。RTD とは異なり、UDF はどこから呼び出されたかを知ることができますが、どちらも呼び出し範囲を「拡張」することはできません。範囲を拡張すると、他のセルの数式/値も変更されます。これは、UDF で許可されているものではありません。RTD サーバーは、Excel オブジェクト モデルにまったくアクセスできません。

COM アドインと RTD サーバーを同じアセンブリに結合することを検討してください。COM アドインは、SheetChange イベントを処理して、ユーザーが RTD を参照する数式を入力したかどうかを判断できます。これが発生すると、COM アドインは必要な範囲のセルに数式またはデータを入力し、いくつかのフラグを設定したり、RTD からアクセス可能なデータを格納したりできます。また、RTD はアドインで定義されたパブリック メソッドを呼び出すことができ、この方法で任意のセルを埋めることができます。このオプションを選択すると、間違いなく RefreshData イベントでそのようなメソッドを呼び出すことになります。ただし、現時点では、セルを変更する COM 呼び出しに対して Excel が準備されていない可能性があることに注意してください。潜在的な問題を回避するために、しばらくしてからセルを変更することをお勧めします。 ADXAddinModule.SendMessage() メソッドと ADXAddinModule.OnSendMessage イベントを参照してください。

どう思いますか?

ベラルーシからよろしく (GMT+3),

Andrei Smolin アドイン Express チーム リーダー

于 2012-09-10T14:12:08.963 に答える