excel - 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
解决方案
如果您还没有,您可以在复制记录集之前添加这些:
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlManual
然后在数据复制过来后将它们恢复正常。
我能想到的复制记录集数据的唯一另一种方法是遍历记录集中的所有字段,但我无法想象这会更快。
另请参阅 SwiftJr 的回答:VBA:使用 Excel 查询访问。为什么这么慢?
也许您可以CursorLocation = adUseClient
在连接上设置光标位置作为答案
推荐阅读
- angular - 是否可以仅在服务器端以角度通用角度呈现某些页面?
- javascript - 如何在 Next.js 中使用 tailwind css 构建词云/标签云
- google-sheets - Google Sheet - 如何使用一张表进行 FULL OUTER JOIN?
- html - 在 Bootstrap Column Divs 中保持动态高度
- reactjs - 导航回组件时阻止 API 调用
- authentication - SalesForce OpenID 问题“ErrorCode=No_Openid_Response&ErrorDescription=Bad+response”
- ios - iOS 14 Widgets 具有更强大的配置能力
- javascript - 导入图像文件夹
- python - 只有在熊猫数据框中以数字开头时才添加前导零
- python - pandas to csv - 保留“$”作为格式