0

Excel の 1 つのインスタンスで適切に動作する C# RTDServer があります。次のように定義されています。

[Guid("1D50EF28-A1BE-4BE9-9214-46A48085ADFF")]
[ProgId("Acme.RtdServer")]
public class RTDServer : IRtdServer
{
   // IRtdServer members:
   // ...
}

サーバーが「接続」されているときのExcel呼び出し

#region IRtdServer Members    
public int ServerStart(IRTDUpdateEvent CallbackObject)
{
    _callback = CallbackObject;
}

その後、更新を収集できることを Excel に通知するために使用できるコールバック オブジェクトを使用します。

_callback.UpdateNotify();

問題は、Excel の 2 番目、3 番目などのインスタンスがある場合、ServerStart呼び出されないことです。つまり、新しい更新の準備ができていることを Excel に通知できません。ここの MS KB 記事では、アウトプロセス RTDServer の同様の動作が提案されています。私の実装は、スレッド化されたインプロセス RTDServer です。

Acme.RtdServer複数のインスタンスで同じサーバーを使用できるようにしたいと考えています。Bloomberg Excel API がそれを達成しているように見えるので、それは可能であるに違いありません。これを達成する方法を知っている人はいますか?

編集: RTD() への呼び出しは UDF でラップされます:

public object ACME_UDF(string ItemID, string TopicName, bool OtherData = false)
{
    if (string.IsNullOrEmpty(ItemID) || string.IsNullOrEmpty(TopicName))
    return "...";

    try
    {
        return _xlApp.WorksheetFunction.RTD("acme.rtdserver", null, ItemID, TopicName, OtherData); 
    }
    catch (Exception)
    {
        return "Failed to retrieve [" + ItemID + "] with [" + TopicName + "]";
    }
}

ありがとう

4

1 に答える 1