求高手改进程序
Sub 材料汇总()Dim wb As Workbook, myfile$, s&
Dim i As Integer
Dim k As Integer
Application.ScreenUpdating = False
myfile = Dir(ThisWorkbook.Path & "\决算\*.xls")
s = 4
Do While myfile <> ""
If ThisWorkbook.Name <> myfile Then
s = s + 1
Set wb = GetObject(ThisWorkbook.Path & "\决算" & "\" & myfile)
With wb.Sheets(1)
For i = 2 To 496
Cells(1, s) = wb.Sheets("封面").Cells(3, 3)
Cells(i, s) = wb.Sheets("新材料表").Cells(i + 5, 5)
Next i
End With
wb.Close False
End If
myfile = Dir
Loop
Application.ScreenUpdating = True
End Sub
这是一个汇总材料的宏程序,但运行比较慢,求高手改进(用数组怎么改进啊)
本帖最后由 Real_King 于 2016-4-4 09:31 编辑
给我的感觉。。。VBA OLE运行效率确实不高吧,你这个遍历单元格可以尝试缩小范围,也可以采用数据库访问形式比较快,具体看格式了,大概看了眼你的行是从第二行起读的,可以采取这种方式 Real_King 发表于 2016-4-4 09:28 static/image/common/back.gif
给我的感觉。。。VBA OLE运行效率确实不高吧,你这个遍历单元格可以尝试缩小范围,也可以采用数据库访问形式 ...
我想采用数组进行读写操作,总是失败,前辈能帮帮我吗 906379829 发表于 2016-4-4 16:59 static/image/common/back.gif
我想采用数组进行读写操作,总是失败,前辈能帮帮我吗
我用的是C#,不过你提到的数组,完全可以以dataset的形式啊,读写比你以遍历单元格形式快得多 Real_King 发表于 2016-4-4 21:17 static/image/common/back.gif
我用的是C#,不过你提到的数组,完全可以以dataset的形式啊,读写比你以遍历单元格形式快得多
Sub 预算材料汇总()
Dim wb As Workbook, wk As Workbook, myfile$, s&
Dim i As Integer
Dim k As Integer
Dim arr
Application.ScreenUpdating = False
myfile = Dir(ThisWorkbook.Path & "\预算\*.xls")
s = 2
Do While myfile <> ""
If ThisWorkbook.Name <> myfile Then
s = s + 1
Set wb = Workbooks.Open(ThisWorkbook.Path & "\预算" & "\" & myfile)
Set wk = GetObject(ThisWorkbook.Path & "\预算" & "\" & myfile)
With wb.Sheets(1)
arr = wb.Sheets("主材清单").Range(Cells(7, 5), Cells(299, 5))
Cells(1, s) = wb.Sheets("封面").Cells(3, 1)
Range(Cells(2, s), Cells(297, s)).Value = arr
End With
ActiveWorkbook.CheckCompatibility = False
wb.Close False
End If
myfile = Dir
Loop
Application.ScreenUpdating = True
End Sub 上述程序是我采用数组编的,红色部分调试不成功,不知道哪里出问题了 本帖最后由 Real_King 于 2016-4-5 00:11 编辑
906379829 发表于 2016-4-4 22:50 static/image/common/back.gif
上述程序是我采用数组编的,红色部分调试不成功,不知道哪里出问题了
如你所见,arr是 Excel Range 对象,你理解的数组不是这样,声明arrDim arr as Excel.Application.Range,不知道VB是不是这样你试试 这段代码应该慢不到哪去,看看是不是打开各个xls文件比较花时间。楼主可以在各个不同阶段输出下时间,看看最慢在哪里。 对于excel的工作表单元格的操作,肯定是用数组计算比直接访问单元格快多了 来学习一下
页:
[1]