ADODB reordset 值提取非常慢

ADODB reordset value extraction very slow

我从服务器加载 sql table 到 excel 到 ADODB.recordset。 然后我想从那个 table 填充我的 spreadsheet。 我需要将列放在特定位置,因此我使用了以下代码。

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

sheet 得到填充,但需要很长时间。我的 table 有 20 列和 700 行,整个过程需要几分钟才能完成。 我尝试用一​​个常量填充 sheet 并且该过程在大约之后完成。一秒。所以我猜这条线有问题

header.Cells(1, j).Offset(i, 0).Value = rs.Fields.item(header.Cells(1, j).Value)

谁能建议,为什么我的代码运行这么慢以及如何提高速度?

您是否关闭了屏幕更新并将计算设置为手动?完成后不要忘记至少重置计算(ScreenUpdating 设置不会持续到你的子结束后)

如果您跳过写入 sheet 这一步,完成循环需要多长时间? 逐个单元格写入很慢,但是 "minutes" 对于这么多数据来说似乎很长