ADODB reordset值提取非常慢

时间:2018-06-21 15:11:56

标签: vba performance adodb recordset

我从服务器将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)

任何人都可以提出建议,为什么我的代码运行如此缓慢,以及如何提高速度?

1 个答案:

答案 0 :(得分:1)

您是否关闭了屏幕更新并将“计算”设置为“手动”?完成操作后,请不要忘记至少重置“计算”(ScreenUpdating设置不会持续到子控件末尾)

如果跳过“写表”步骤,循环需要多长时间? 逐个单元写入速度很慢,但是对于这么多数据,“分钟”似乎很长