我从服务器将sql表加载到excel到ADODB.recordset。 然后,我想从该表填充我的电子表格。 我需要将列放在特定的位置,因此我使用以下代码来实现。
Dim header As Range
Set header = sh.Range("A1").Resize(1, sh.Range("A1").End(xlToRight).Column)
i = 1
Do Until rs.EOF
For j = 1 To header.Columns.Count
header.Cells(1, j).Offset(i, 0).Value = rs.Fields.item(header.Cells(1, j).Value)
Next j
rs.MoveNext
i = i + 1
Loop
rs.Close
Set rs = Nothing
Next s
该工作表已被填充,但要花很长时间。我的表有20列700行,整个过程需要几分钟才能完成。 我尝试用一个常量填充工作表,然后大约完成该过程。一秒。所以我想这行有问题
header.Cells(1, j).Offset(i, 0).Value = rs.Fields.item(header.Cells(1, j).Value)
任何人都可以提出建议,为什么我的代码运行如此缓慢,以及如何提高速度?
答案 0 :(得分:1)
您是否关闭了屏幕更新并将“计算”设置为“手动”?完成操作后,请不要忘记至少重置“计算”(ScreenUpdating设置不会持续到子控件末尾)
如果跳过“写表”步骤,循环需要多长时间? 逐个单元写入速度很慢,但是对于这么多数据,“分钟”似乎很长