我有一個子組調用ActiveWorkbook.RefreshAll從XML源中提取新數據,然後對其執行多重修改。問題是沒有足夠的時間來完成RefreshAll命令,因此以下子和函數最終不能正確執行,導致重複行未被正確擦除。等到ActiveWorkbook.RefreshAll完成 - VBA
我一直在使用Application.Wait和睡眠功能嘗試,但他們似乎暫停刷新過程了。我只想讓其餘的代碼等待刷新過程完成,然後再執行其餘的代碼。
關於如何實現這個的任何想法?現在我只能通過不調用RefreshAll來修復它,這讓我有了實現第二個流程的想法,但這不是一個好的解決方法。
請讓我知道,如果有任何不明確。謝謝
編輯 所以我嘗試了一些建議,從下面的帖子,這是我能夠想出。 做一個「記錄宏」,然後在表格屬性中取消選中「啓用後臺刷新」沒有任何結果。之後我也進行了刷新。這是錄製宏的結果是:
With ActiveWorkbook.Connections("XMLTable")
.Name = "XMLTable"
.Description = ""
End With
ActiveWorkbook.Connections("XMLTable").refresh
類ActiveWorkbook.Connections沒有一個BackgroundQuery選項,這樣我可以將它設置爲False。有任何想法嗎?
只是要清楚。這是一個在Excel網站上託管的XML文件,並導入到表格中。然後,我將這些數據稱爲關鍵點和其他事物。這裏的目標是允許從網站到表格的導入過程在執行任何其他命令之前完成。 感謝
EDIT2: 一個進一步的研究之後,我發現這個網頁:http://www.mrexcel.com/forum/excel-questions/564959-execute-code-after-data-connection-refresh-finished.html 看來,連接的XML類型不具有BackgroundQuery布爾值。該選項僅適用於ODBC和OLEDB連接,它們分別是xlConnectionTypeODBC和xlConnectionTypeOLEDB類型。我使用的XML連接類型爲xlConnectionTypeXMLMAP,它沒有BackgroundQuery選項。 有沒有人有任何想法去哪裏從這裏?我現在唯一想到的解決方案是在Excel表格上創建兩個獨立的宏按鈕,一個用於刷新,另一個用於數據修改,但我寧願將該選項保留到最後。
使用'DoEvents'的'Activeworkbook.RefreshAll'語句之後。 – L42
我從來沒有用過它。你能給我舉個例子嗎? – Mo2
只需在您的'Activeworkbook.RefreshAll'後面添加'DoEvents'語句即可。爲了幫助你形象化,我將發佈回答。 – L42