2

我通过 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 更改状态时触发一个事件,但我在列表中找不到该事件。有谁知道这是否存在以及如何暴露它?或者,如果有人对如何完成这项工作有更好的想法,我非常愿意接受。我不能做的唯一建议是使用 RTD 而不是我已经拥有的调度 - 我不能改变那部分。

提前致谢!

4

0 回答 0