【问题标题】:VBA ADODB excel - read data from RecordsetVBA ADODB excel - 从记录集中读取数据
【发布时间】:2011-04-26 16:26:59
【问题描述】:

希望你能帮助我,我想从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 中工作。但是我发现 Excel 的版本应该是 11。这不起作用

【问题讨论】:

标签: excel vba


【解决方案1】:

我很惊讶连接字符串对您有用,因为它缺少分号。 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)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-25
    • 2014-01-26
    • 1970-01-01
    • 2011-01-05
    • 2017-04-22
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多