我有一个 VBA 应用程序,它创建一个 COM 对象的实例,然后不断地轮询对象的DataReady属性以查看是否有新数据。当有新数据可用时,它会将数据粘贴到电子表格中。问题是这个宏(vba 子例程)不断运行,这会减慢 excel 的爬行速度,并使计算机在进程运行时有些无法使用。有没有一种方法可以让我在单独的线程上启动这个进程,或者做一个 .NET 后台工作者之类的事情?
我的两次尝试是使用这样的while循环..
While(True)
If(myObject.DataReady)
Do some stuff here
End If
WEnd
然后这个
Sub GrabNewPoint()
If (myModule.NewDataReady_Receiver = True) Then
Do some stuff here...
End If
If (StopTest = False) Then
NextTime = Now() + TimeValue("00:00:20")
Application.OnTime NextTime, "GrabNewPoint"
End If
第二次尝试肯定效果更好,但它仍然大大减慢了速度。有更好的解决方案吗?
我的 COM 对象是我用 C# 编写的类库。当数据准备好时,我可以添加在类库中触发的事件,但是如何在 VBA 程序中监听这些事件?