我有一個VBA應用程序,它創建一個COM對象的實例,然後不斷輪詢對象DataReady屬性以查看是否有新數據。當新數據可用時,它將數據粘貼到電子表格中。問題在於這個宏(vba子例程)不斷運行,這會導致爬行速度變慢,並使進程運行時計算機有些不可用。有沒有辦法讓我可以在單獨的線程上開始這個過程,或者做一些類似於.NET的後臺工作者?如何在不使PC爬行的情況下在VBA中執行長時間運行的進程?
我的兩次嘗試都使用這樣一個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
第二次嘗試definitly工作得更好,但它仍然大大減緩下來。有更好的解決方案嗎?
我的COM對象是我在C#中編寫的類庫。當數據準備就緒時,我可以添加在類庫中觸發的事件,但是如何在VBA程序中偵聽這些事件?
你能給我提示如何從COM對象中引發VBA事件,以及如何讓我的VBA代碼響應事件嗎? – PICyourBrain 2010-08-09 13:45:24
我不得不承認,我不知道。聽起來這是一個很好的問題,但這個網站... – DonaldRay 2010-08-09 14:28:16