将 Excel 文件读入 ADODB 记录集
Read Excel file into ADODB recordset
我有一个 Excel VBA 应用程序,它使用 ADODB 记录集从其他 excel 文件中读取信息。此应用程序运行良好,但公司软件更新将其损坏(我想,无法解释)。
下面复制的是一个精简版本,它复制了我遇到的错误(也在下面显示)。我试图查看许多引用 Microsoft.Jet.OLEDB.4.0 的帖子,但我不确定这是否相关。他们都提到了一个我没有看到的特定错误。
识别出的错误是由CN.Open命令引起的。感谢 Matt'sMug 的评论,我确定我可以毫无问题地执行连接,前提是主题工作簿已经在 Excel 中打开。如果关闭(应该关闭),则错误 returns。有什么想法吗?
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
所以,我一直没有弄清楚为什么以前的供应商停止工作了。但是,我能够切换到同样有效的替代方案。编码也更简洁了,所以我很高兴。这是我的新协议:
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
我有一个 Excel VBA 应用程序,它使用 ADODB 记录集从其他 excel 文件中读取信息。此应用程序运行良好,但公司软件更新将其损坏(我想,无法解释)。
下面复制的是一个精简版本,它复制了我遇到的错误(也在下面显示)。我试图查看许多引用 Microsoft.Jet.OLEDB.4.0 的帖子,但我不确定这是否相关。他们都提到了一个我没有看到的特定错误。
识别出的错误是由CN.Open命令引起的。感谢 Matt'sMug 的评论,我确定我可以毫无问题地执行连接,前提是主题工作簿已经在 Excel 中打开。如果关闭(应该关闭),则错误 returns。有什么想法吗?
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
所以,我一直没有弄清楚为什么以前的供应商停止工作了。但是,我能够切换到同样有效的替代方案。编码也更简洁了,所以我很高兴。这是我的新协议:
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