VBA ADODB excel - 从Recordset读取数据

时间:2010-10-17 20:08:19

标签: excel vba excel-vba

希望你能帮助我,我想从excel文件中读取数据,以及方式 我正在做的是在背景中创建Excel应用程序的实例,但比我 我被提示有关VBA宏 - 禁用或启用它。

我有100个excel文件,我需要从中收集数据,所以如果我被提示每个文件,我最终会得到真正无效的方法。虽然我是Excel VBA世界的新手并且开始怀疑是否还有其他方式.....

我的问题是我可以用其他方式打开它们吗?

我找到了ADODB,我觉得这可能对我有所帮助。所以我的代码如下。 首先,我想从几个单元格中读取数据。我不知道怎么做 我可以读取数据吗?我尝试阅读,如下所示,但它会引发错误。 Opennig连接顺利,查询执行也是如此。但后来我猜,如何阅读数据。

我使用VBA编辑器。

Sub hello_jet()
Set cn = CreateObject("ADODB.Connection")
With cn
 .Provider = "Microsoft.Jet.OLEDB.4.0"
  .ConnectionString = "Data Source=D:\test.xls" & _
"Extended Properties=Excel 8.0;"
.Open
End With
strQuery = "SELECT * FROM [Sheet1$E36:E38]"
Set rs = cn.Execute(strQuery)
Do While Not rs.EOF
  Set strNaam = rs.Fields(0).Value
Loop
rs.Close
End Sub

我在Office 2003工作。然后我发现excell的版本应该是11.这不起作用

1 个答案:

答案 0 :(得分:16)

我很惊讶连接字符串适合你,因为它缺少一个分号。 Set仅用于对象,因此您不会说Set strNaam。

Set cn = CreateObject("ADODB.Connection")
With cn
 .Provider = "Microsoft.Jet.OLEDB.4.0"
  .ConnectionString = "Data Source=D:\test.xls " & _
  ";Extended Properties=""Excel 8.0;HDR=Yes;"""
.Open
End With
strQuery = "SELECT * FROM [Sheet1$E36:E38]"
Set rs = cn.Execute(strQuery)
Do While Not rs.EOF
  For i = 0 To rs.Fields.Count - 1
    Debug.Print rs.Fields(i).Name, rs.Fields(i).Value
    strNaam = rs.Fields(0).Value
  Next
  rs.MoveNext
Loop
rs.Close

还有其他方法,具体取决于您要执行的操作,例如GetString(GetString Method Description)。