我有工作表,其通過以下公式從RTD服務器獲取數據:暫停RTD服務器在Excel和保存工作表
=RTD("tos.rtd", , "ASK", ".SPX150220C750")
我想保存在工作表與上述式每隔1分鐘左右。面臨的挑戰是暫停VBA代碼,並確保在我們保存之前,單元格中的值被更新。我已經嘗試了下面的代碼。
Sub Archiving()
For i = 0 To 4
Worksheets("Test").Activate
Application.Sheets("Test").Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="D:\Save " & i & ".csv", FileFormat:=xlCSV
ActiveWorkbook.Save
ActiveWindow.Close
Windows("Real time data.xlsm").Activate
Application.DisplayAlerts = True
Application.Wait (Now + TimeValue("0:00:05"))
ActiveWorkbook.RefreshAll
DoEvents
Next i
End Sub
代碼不起作用,只是因爲DoEvents一直等到RTD完成更新,而永遠不會。我也看到了與DB的連接顯式暫停的示例,但我不知道如何修改它與RTD服務器的情況。我試圖從C#運行RTD服務器,但失敗了。 RTD in C# for dummies 有什麼建議嗎?
我對RTD不熟悉,但是您是否嘗試過使用WinAPI'Sleep'功能?這應該使Excel應用程序在指定的時間間隔內「睡眠」。每1分鐘節省似乎不必要的課稅,不是嗎?應用程序如此不穩定以致較長的時間間隔不適合? – 2015-02-08 18:31:24
謝謝大衛。我想我已經嘗試了'睡眠'。問題在於Excel無法完全更新工作表,Excel會一直保存舊數據。我可以將保存間隔增加到5分鐘,但我的目標是收集實時數據,所以我希望在技術上儘可能縮小保存間隔。 – user1700890 2015-02-08 19:51:54
我仍然很好奇爲什麼你覺得需要經常保存文檔...你是否在每個保存點都創建一個新的文件副本?如果是這樣,這是非常多餘的,不是嗎?如果不是,每次「保存」操作都會覆蓋之前的保存,那麼爲什麼不使用較小的間隔,或者爲什麼不打算自動保存呢?假設你的應用程序是穩定的,並且不會隨機「崩潰」,那麼就沒有真正的數據丟失風險...... – 2015-02-08 20:03:44