ディスパッチインターフェイスを使用して、COMdllを介してExcelプラグインに外部データを配信しています。VBAシンクメソッドでは、次のように適切なセルにデータを書き込もうとする前に、Application.Ready=Trueであることを確認します。
If Application.Ready = True Then
With Workbooks(bookName).Sheets(sheetName).Range(rangeName)
.Value = thisData
End With
Else
Debug.Print "Dropped Payload"
End If
データを削除したくないので、データを正しく取得するためにいくつかのことを試みました。
- 値を設定する代わりに、Application.OnTimeを呼び出します。残念ながら、Application.Ready = Falseの場合、ExcelではApplication.OnTimeを呼び出すことができませんでした。
- ここでの手法を使用して、OnTimeを呼び出すWindowsタイマーを開始します。ここでの問題は、複数のイベントが互いに重なり合って発生し、それらすべてがAfterUDFRoutine1に同時にアクセスしようとして、クラッシュを引き起こしたことでした。
したがって、私の最新の考えは、データをキューに入れてから、Application.Ready=Trueのときにキューを空にすることです。これを実装するには、Application.Readyが状態を変更したときに発生するイベントが必要ですが、リストにイベントが見つかりません。これが存在するかどうか、そしてそれを公開する方法を誰かが知っていますか?あるいは、誰かがこの作品を作る方法についてより良い考えを持っているなら、私はそれに対して非常にオープンです。私ができない唯一の提案は、私がすでに持っているディスパッチの代わりにRTDを使用することです-私はその部分を変更することはできません。
前もって感謝します!