将Excel文件读入ADODB记录集

时间:2017-10-24 17:26:13

标签: excel vba adodb

我有一个Excel VBA应用程序,它使用ADODB记录集从其他Excel文件中读取信息。这个应用程序工作正常,但公司软件更新刚刚打破它(我猜,不能解释)。

下面复制的是一个精简版本,它复制了我得到的错误(也在下面显示)。我试图查看引用Microsoft.Jet.OLEDB.4.0的许多帖子,但我不确定这是否相关。它们都引用了我没有看到的特定错误。

识别的错误是由CN.Open命令引起的。感谢Matt'sMug的评论,如果主题工作簿已经在Excel中打开,我已经确定我可以毫无问题地执行连接。如果它关闭(应该是),则错误返回。有什么想法吗?

enter image description here

Public Sub GetExcelContent()
Dim Excelbook As String
Dim CN As ADODB.Connection, RS As ADODB.Recordset

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1

Excelbook = Sheets(1).Cells(4, 3)

Set CN = CreateObject("ADODB.Connection")
Set RS = CreateObject("ADODB.Recordset")

CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source= " & Excelbook & ";" & _
        "Extended Properties=""Excel 8.0;HDR=Yes;"";"
RS.Open "SELECT * FROM [M2_F$]", _
CN, adOpenStatic, adLockOptimistic, adCmdText

End Sub

1 个答案:

答案 0 :(得分:0)

所以,我还没弄清楚为什么以前的提供商已经停止工作了。但是,我能够切换到一个同样有效的替代方案。编码也有点干净,所以我很开心。这是我的新协议:

Dim CN as New ADODB.Connection
Dim RS as New ADODB.Recordset
Cstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & Excelbook & _
     & "; Extended Properties='Excel 12.0 Xml;HDR=YES';"
CN.Open Cstring
RS.Open "SELECT * FROM [M3_F$]", CN, adOpenStatic, adLockOptimistic, adCmdText