【发布时间】:2019-07-19 02:45:40
【问题描述】:
我正在尝试使用带有 SQL 查询的 ADO 从 Excel 文件 (.xls) 中获取一些值。但是,我在尝试打开连接时遇到错误。这是我目前拥有的:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
strFile = IIf(strPath <> "", strPath, Range("G13").Value)
If strFile = "" Then Exit Sub
strCon = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile & ";'Extended Properties='Excel 8.0;HDR=No;IMEX=1';"
strCon2 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile & ";'Extended Properties='Excel 12.0 Xml;HDR=YES';"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon2
我已经使用我的两个连接字符串(strCon、strCon2)进行了测试,但没有成功。我要么得到一个没有文本的错误,只有一个“x”符号。或"System Error &H80004005 (-2147467259)"
编辑:
改变了它,所以我打开记录集,但它仍然给我同样的错误。
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
strFile = IIf(strPath <> "", strPath, Range("G13").Value)
If strFile = "" Then Exit Sub
strCon = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & _
strFile & "';'Extended Properties='Excel 8.0;HDR=No;IMEX=1';"
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strFile & ";" & _
"Extended Properties=Excel 12.0;"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
'cn.Open strCon
strSQL = "SELECT * FROM [Sheet11$C5]"
rs.Open strSQL, strConn
Debug.Print rs.GetString
【问题讨论】:
-
是的,该值被正确引用。 strFile 总是正确的,它在 cn.Open 发生错误
-
参考这个link。你错过了 sql 和 rs.open 而不是 cn.open。
-
@Dy.Lee 查看我的编辑,错误仍然出现
-
能否提交strPath和Range("G13").Value?
-
strSQL = "SELECT * FROM [Sheet11$C5]" 似乎是 strSQL = "SELECT * FROM [Sheet11$]"
标签: excel connection-string ado vba