下面这串代码 是将excel中的数据读入到VB的MSFlexGrid1控件中 能提高点效率吗?
代码如下,这样读取速率很慢,有么有什么方法能提高速度?因为excel中的数据就那么几行,但这串代码是读取了excel表的所有数据(包括空白单元格求解答)PrivateSu...
代码如下 ,这样读取速率很慢,有么有什么方法能提高速度?因为excel中的数据就那么几行,但这串代码是读取了excel表的所有数据(包括空白单元格 求解答)
Private Sub SJDY()
Dim i, j As Integer
Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim ExcelSheet As Excel.Worksheet
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False
Set ExcelBook = ExcelApp.Workbooks.Open(App.Path & "\外购入库.xlsx")
Set ExcelSheet = ExcelApp.Worksheets(2)
With MSFlexGrid1
.Cols = ActiveSheet.UsedRange.Count
.Rows = ActiveSheet.UsedRange.Count
For i = 1 To .Cols - 1
For j = 1 To .Rows - 1
.TextMatrix(j - 1, i) = ExcelApp.Sheets(2).Cells(j, i)
Next j
Next i
End With
ExcelBook.Close (True)
ExcelApp.Quit
Set ExcelApp = Nothing
End Sub 展开
Private Sub SJDY()
Dim i, j As Integer
Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim ExcelSheet As Excel.Worksheet
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False
Set ExcelBook = ExcelApp.Workbooks.Open(App.Path & "\外购入库.xlsx")
Set ExcelSheet = ExcelApp.Worksheets(2)
With MSFlexGrid1
.Cols = ActiveSheet.UsedRange.Count
.Rows = ActiveSheet.UsedRange.Count
For i = 1 To .Cols - 1
For j = 1 To .Rows - 1
.TextMatrix(j - 1, i) = ExcelApp.Sheets(2).Cells(j, i)
Next j
Next i
End With
ExcelBook.Close (True)
ExcelApp.Quit
Set ExcelApp = Nothing
End Sub 展开
2个回答
展开全部
不要读excel ,直接把excel的数据导入access,可参考以下:
Private Sub Command1_Click()
Dim db As Database
Dim sheet As String, excelpath As String, AccessPath As String, AccessTable As String
AccessPath = Text2.Text '数据库路径
excelpath = Text1.Text '电子表格路经
AccessTable = Text4.Text '数据库内表格
sheet = Text3.Text '电子表格内工作表
Set db = OpenDatabase(excelpath, True, False, "Excel 5.0") '打开电子表格文件
SQL = ("Select * into [;database=" & AccessPath & "]." & AccessTable & " FROM [" & sheet & "$]")
db.Execute (SQL) '将电子表格导入数据库
Data1.RecordSource = "sheet1"
Data1.Refresh
DBGrid1.Refresh '显示电子表格导入到数据库的数据
End Sub
更多追问追答
追问
我的要求是要从Excel中导入 把它做为数据库的啊
追答
你的代码是把excel一个单元格一个单元格的读入,我提供参考的是整个表直接导入到数据库中,然后显示出来。
展开全部
加一个Application.ScreenUpdate = False
不要用With,不要在前台打开Excel,for循环直接写Next,把后面的i删掉。。。。还有好多地方可以优化。。。。。。
不要用With,不要在前台打开Excel,for循环直接写Next,把后面的i删掉。。。。还有好多地方可以优化。。。。。。
追问
还能具体点吗?谢谢
追答
不要用Workbook.Open,用GetObject,
Dim ExcelApp As Excel.Application
不要用这个方法,相当于你先创建了一个Excel又销毁了,这属于无用功。。。。With在数据量大的时候,这么写会影响一些速度,但是不大。主要的建议就是
加一个Application.ScreenUpdate = False,不要用ExcelApp As Excel.Application
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询