【发布时间】:2015-09-29 10:42:52
【问题描述】:
我尝试将我的 xls 与 access 数据库连接。当我在我的机器上安装完全访问程序时,下面的代码工作得更好。问题是当我尝试在只安装了运行时访问版本的机器上使用它时。
我已经使用了这个参考:
Visual Basic For Applications
Microsoft Excel 14.0 Object Library
OLE Automation
Microsoft Office 14.0 Object Library
Microsoft Forms 2.0 Object Library
当我尝试运行以下代码时出现错误:ActiveX 组件无法创建对象或返回对此对象的引用(错误 429)
Sub mcGetPromoFromDB()
Application.ScreenUpdating = False
Dim daoDB As DAO.Database
Dim daoQueryDef As DAO.QueryDef
Dim daoRcd As DAO.Recordset
'Error on line below
Set daoDB = Application.DBEngine.OpenDatabase("K:\DR04\Groups\Functional\DC_Magazyn\Sekcja_Kontroli_Magazynu\Layout\dbDDPiZ.accdb")
Set daoRcd = daoDB.OpenRecordset("kwPromoIDX", dbOpenDynaset)
Dim tempTab() As Variant
For Each Article In collecArticle
daoRcd.FindNext "IDX = " & Article.Index
Article.PromoName = daoRcd.Fields(1).Value
Article.PromoEnd = "T" & Format(daoRcd.Fields(2).Value, "ww", vbMonday, vbUseSystem)
Next
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
如果你要提前绑定代码,你真的应该设置一个 DAO 引用。如果没有安装 Access 就无法使用,您可以改用 ADO。
-
好的,我尝试改用ADO,但是速度很慢,有什么方法可以加快这段代码的速度吗?我使用
rsADO.Find "Indeks = " & Article.Index, 0, adSearchForward, 1 在记录集中查找。 -
您是否尝试过过滤?还是只返回符合您条件的记录而不是整个表,这样您要搜索的记录就更少了?
-
我现在试过了,但我没有看到任何差异。问题是我必须在 120k 查询中查找 6k 记录。