我想從excel(2003)電子表格中使用vb6提取一個值表,其結果需要存儲在(adodb)記錄集中。該表是這樣的:使用vb6從excel中提取的忽略列
Name Option.1 Option.2 Option.3 Option.4 Option.5 Option.6 ----------------------------------------------------------------- Name1 2 3 4 Name2 2 3 4 Name3 2 3 4 Name4 2 3 4 Name5 2 3 4 Name6 2 3 4 Name7 2 3 4 Name8 2 3 4 Name9 2 3 4 5 6 7
在連接和執行查詢「SELECT * FROM [Sheet1$]
」,甚至是特定的列,「SELECT [Option#6] FROM [Sheet1$]
」(見注1),並通過成果循環,我給Null
的價值觀行Name9
,Option.4
- > Option.6
而不是正確的值5,6和7.看起來與電子表格的連接使用「最佳猜測」來決定有效表格限制是什麼,並且只需要設置一定數量的行考慮在內。
要連接到電子表格,我嘗試了兩個連接提供程序Microsoft.Jet.OLEDB.4.0
和MSDASQL
並得到相同的問題。
下面是我使用的連接設置:
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & filePath & ";Extended Properties=Excel 8.0;"
- - - - OR - - - -
.Provider = "MSDASQL"
.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & filePath & ";MaxScanRows=0;"
.CursorLocation = adUseClient
.Open
End With
Set rsSelects = New ADODB.Recordset
Set rsSelects = cn.Execute("SELECT [Option#5] FROM " & "[" & strTbl & "]")
此問題僅當有超過8行(不包括列名),我已經設置MaxScanRow=0
爲MSDASQL
連接,但是這有發生產生了相同的結果。
我已經包括了著名的項目引用:
- MS ActiveX數據對象2.8庫
- MS ActiveX數據對象Recordset 2.8庫
- 的MS Excel 11.0對象庫
- MS數據綁定集合VB 6.0(SP4)
在這個問題上的任何幫助將不勝感激!
(1)出於某種原因,在列名稱中包含小數點時,會將其解釋爲#。
謝謝大家!中途試圖建立一個Schema.ini
「編程」從KB155512onedaywhen的優秀post指出我朝着解決方案:
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & filePath & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
我會鼓勵有類似問題的人閱讀帖子和評論,因爲有輕微的變化從一個人到另一個人的解決方案。
至少我是在場上。 +1 – Tomalak 2008-10-23 21:04:49