何か不明な理由でcopyfromrecordsetを中断する2つの列に対してcopyfromrecordsetの代わりにループを使用しています。これをループすると、800行を実行するのに2分以上かかりますが、これは非常に遅いようです。 Copyfromrecordsetは、20秒未満で10倍の列数で800行を入力できます。誰かがループをとても遅くしていると言うことができますか?遅いVBAループ - レコードセットから貼り付け
Set rng = Activesheet.Range("P2")
Row = 0
Do While Not Rs1.EOF
For col = 0 To Rs1.Fields.Count - 1
rng.Offset(Row, col).Value = Rs1(col)
Next col
Row = Row + 1
Rs1.MoveNext
Loop
レコードセット内の個々のフィールドにアクセスしているため、個々のフィールドごとにワークシートが更新されているため、処理が遅くなります。 ( 'CopyFromRecordset'は、単一の転送ステップでワークセット全体にレコードセットを転送するだけです。) – YowE3K
' CopyFromRecordset'を試したときに単一のセルアドレスを使用していましたか? 'CopyFromRecordset'は、範囲がレコードセットのサイズに関係なく、左上のセルを参照する場合に最も効果的です。 'CopyFromRecordset'が問題を引き起こしている場合は、データを配列として返す' GetRows'関数を考えてみましょう。配列を転置して*全体配列を1ステップで挿入する必要があります。 – ThunderFrame
私はこの提案の大ファンです^^^^^^ –