首页 > 解决方案 > CopyFromRecordset 花费太多时间

问题描述

我在一个 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

标签: excelvba

解决方案


如果您还没有,您可以在复制记录集之前添加这些:

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlManual

然后在数据复制过来后将它们恢复正常。

我能想到的复制记录集数据的唯一另一种方法是遍历记录集中的所有字段,但我无法想象这会更快。

另请参阅 SwiftJr 的回答:VBA:使用 Excel 查询访问。为什么这么慢?

也许您可以CursorLocation = adUseClient在连接上设置光标位置作为答案


推荐阅读