我有一个Excel VBA应用程序,它使用ADODB记录集从其他Excel文件中读取信息。这个应用程序工作正常,但公司软件更新刚刚打破它(我猜,不能解释)。
下面复制的是一个精简版本,它复制了我得到的错误(也在下面显示)。我试图查看引用Microsoft.Jet.OLEDB.4.0的许多帖子,但我不确定这是否相关。它们都引用了我没有看到的特定错误。
识别的错误是由CN.Open命令引起的。感谢Matt'sMug的评论,如果主题工作簿已经在Excel中打开,我已经确定我可以毫无问题地执行连接。如果它关闭(应该是),则错误返回。有什么想法吗?
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
答案 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