尝试使用ADO

时间:2017-06-27 13:14:49

标签: excel excel-vba connection-string ado vba

我尝试使用带有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)测试但没有成功。我得到一个错误,没有文字只有&#34; x&#34;符号。或"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

1 个答案:

答案 0 :(得分:1)

回答这个问题为时已晚,但对于将来的读者来说。

我有类似的问题。 我试图将Excel与MySQL数据库连接,但是当记录集打开时,它会破裂并向我显示&H80004005错误。

最后,问题是我的办公室是32位,但是我的ODBC是64位,这不喜欢它。

我将ODBC连接更改为32位,并且VBA功能正常工作。