找到新方法了,如下:
控件用的是DataGrid,用ADO读取Excel 文件,Excel文件有350行150列内容,
读取只需要1-2S时间。
代码如下:
Public Function Read_Excel()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\data\Data.xls;" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
cn.CursorLocation = adUseClient
rs.Open "SELECT * FROM [SHEET8$A1:EG]", cn, adOpenStatic
Set Form1.DataGrid1.DataSource = rs
Form1.DataGrid1.Refresh
End Function
在网上查看@cbm666老师给其他同学解答的问题得出,要读取DataGrid某行某列内容代码是:DataGrid1.row=2
DataGrid1.col=3
msgbox DataGrid1.text
所以自己做了个函数:
Function DataGrid(i As Integer, j As Integer) As String
Form1.DataGrid1.Row = i
Form1.DataGrid1.Col = j
DataGrid = Form1.DataGrid1.Text
End Function
每次调用的话直接DataGrid(2,3)
但是问题又来了,我使用一个循环如下:
For i = 0 To 36 'DataGrid(i, 0) = ""
combo1.AddItem DataGrid(i, 0)
Next i
但是显示出来的内容不是自己想要的,数据有误,查找了老半天,找到了问题所在。
原来DataGrid1控件在Form1上显示的宽度不够,只能显示21条数据,所以i=0 to 36 索引越界,这个到目前为止还没解决。希望各位帮忙,只要这个实现了,我自己编写的软件就快完工了,每天上班都没时间写软件,偷偷学,偷偷写,都快1个月了,1楼那个界面的软件却还是没有完成。。。
@VBzhuyongxing