我在一个VBA代码下运行,并且CopyFromRecordset
被多次调用,并且执行时间过多。
有什么方法可以减少执行时间?
DBPath = ThisWorkbook.FullName
Sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"
con.Open Sconnect
SQLQuery = "Select * from [ALM_Scenario_Dump$] where Scenario_Name='" & Scenario_Na & "'"
mrs.Open SQLQuery, con
ThisWorkbook.Sheets("ALM_Scenario_Detailed_Temp").Range("A2").CopyFromRecordset mrs
mrs.Close
con.Close
答案 0 :(得分:0)
如果还没有,可以在复制记录集之前添加它们:
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlManual
然后在复制数据后将它们恢复为正常状态。
我可以想到的用于复制记录集数据的另一种方法是遍历记录集中的所有字段,但我无法想象这会更快。
另请参见SwiftJr的答案:VBA: Querying Access with Excel. Why so slow?
也许您可以在连接上使用CursorLocation = adUseClient
来设置光标位置作为答案