2010-10-17 235 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)是什麼。