通过COM dll接收数据时,Excel Application.Ready = False

我使用调度接口通过COM DLL将外部数据传递到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。
  • 使用这里的技术来启动一个Windows定时器,然后调用OnTime。 这里的问题是多个事件相互重叠,他们都试图同时访问AfterUDFRoutine1,导致崩溃。

所以我最近的想法是将数据放入队列,然后在Application.Ready = True时排空队列。 为了实现这个,我需要在Application.Ready更改状态时触发一个事件,但是我无法在列表中find该事件。 有人知道这是否存在,以及如何揭露它? 或者,如果有人对如何使这项工作有更好的想法,我对此非常开放。 我唯一不能做的build议是使用RTD,而不是我已经调度 – 我不能改变那部分。

提前致谢!