【发布时间】:2016-08-27 02:32:36
【问题描述】:
我通过 VBA 将 Access 数据库连接到 Excel,将数据从单个表 "Category" 导入到工作表。下面的代码,但是,而不是表,我可以导入数据库中已经存在的查询吗?
当我在第 15 行将表名称更改为查询名称时,它显示“错误”。
'connection Declairation
Dim conn As ADODB.Connection
Dim data As ADODB.Recordset
Set conn = New ADODB.Connection
Set data = New ADODB.Recordset
' end of connection Declairation
conn.ConnectionString = ConstrAccess
conn.Open
On Error GoTo closeconnection
With data
.ActiveConnection = conn 'specfied the connection
.Source = "Category" ' works only for Table Type
.LockType = adLockReadOnly
.CursorType = adOpenForwardOnly
.Open
End With
On Error GoTo closerecordset
Datasheet.Range("a2").CopyFromRecordset data
On Error GoTo 0
closerecordset:
data.Close
closeconnection:
conn.Close
End Sub
【问题讨论】:
-
我无法重现您的问题。一个命名的、存储的查询适用于我:Excel 2013、Win 10、MS ActiveX 6.1 库参考。您收到的错误是什么?
-
你可以试试这个 -
Data>From Access> 选择 Access 文件 > 如果你没有在列表中看到你的查询,那么你可能需要更改查询直到它出现在列表中。例如SELECT * FROM ([query name]) -
@Parfait 对不起,我错过了 connectionString,
Const ConstrAccess As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=(path of Database).accdb;Persist Security Info=False;" -
@Slai 我真是个傻瓜,谢谢。