gpt4 book ai didi

mysql - 将 Access 数据库查询复制到 Excel 电子表格中

转载 作者:行者123 更新时间:2023-11-29 02:54:38 26 4
gpt4 key购买 nike

我有一个 Access 数据库和一个 Excel 工作簿。我需要做的是查询数据库并将查询粘贴到工作表中。

问题是运行时。我已经逐步完成了该程序并且一切正常,但它的运行速度非常慢,我们正在谈论每个查询最多 30 秒的运行时间,尽管大部分运行时间都来自 CopyFromRecordset 调用。

数据库在我查询的表中有超过 80 万行。目前在我公司每天早上都有人手动查询表格并将它们复制并粘贴到excel中。我正在尝试删除此进程。

这是我的:

Sub new1()

Dim objAdoCon As Object
Dim objRcdSet As Object

' gets query information '
Dim DataArr()
Sheets("Data2").Activate
DataArr = Range("A1:B40")

For i = 1 To UBound(DataArr)

job = DataArr(i, 1)
dest = DataArr(i, 2)

If InStr(dest, "HT") > 0 Then
OpCode = "3863"
ElseIf InStr(dest, "HIP") > 0 Then
OpCode = "35DM"
End If

strQry = "SELECT * from [BATCHNO] WHERE ([BATCHNO].[Job]='" & job & "') AND ([BATCHNO].[OperationCode] = " & "'" & OpCode & "')"

Set objAdoCon = CreateObject("ADODB.Connection")
Set objRcdSet = CreateObject("ADODB.Recordset")

objAdoCon.Open "Provider = Microsoft.Jet.oledb.4.0;Data Source = C:\Users\v-adamsje\Desktop\HTmaster.mdb"
'long run time
objRcdSet.Open strQry, objAdoCon
'very long run time
ThisWorkbook.Worksheets(dest).Range("A2").CopyFromRecordset objRcdSet

Set objAdoCon = Nothing
Set objRcdSet = Nothing

Next i

End Sub

感谢任何帮助。我是 VBA 和 Access 的新手,所以这很容易解决。谢谢

最佳答案

Excel 非常擅长自己获取数据,而无需使用 VBA。

在数据功能区上

  1. 在某处(例如 mdb 或 SServer)创建与表或数据 View 的连接

  2. 然后使用“现有连接”按钮将连接表中的数据添加到工作表表 (ListObject)。

  3. 您甚至可以将工作簿(即连接)设置为每 12 小时刷新一次数据。

对您需要为其获取数据的所有表/ View 重复此操作。您甚至可以将 SQL 指定为连接的一部分。

让 excel 照顾好自己。

我刚刚在 2 秒内从“附近”的磁盘中抓取了一个 250,000 行的表。

它会自己照顾自己,没有代码需要维护!

关于mysql - 将 Access 数据库查询复制到 Excel 电子表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31988815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com