2010-10-17 228 views
5

希望你能帮助我,我想从excel文件中读取数据,并且我的方式 我在做的是在backgroud中创建Excel应用程序的实例,但是我的问题比我的 VBA宏 - 禁用或启用它。VBA ADODB excel - 从记录集中读取数据

我有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.这不起作用

回答

13

我很惊讶的是,连接字符串为你的作品,因为它缺少一个分号。 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(http://www.w3schools.com/ado/met_rs_getstring.asp)是什么。