私は、45k行と48列のデータを取り出すADODB接続を持っています。クエリは1秒未満で実行されますが、copyformrecordset行は実行に15分以上かかります。それはなぜそんなに遅いのですか?ADODBペースト非常に遅い
更新:Connection.CursorLocation = adUseClient
を追加すると、遅延がレコードセットのオープンラインに移動し、copyfromrecordsetがほぼ即時になります。それがまだ15分かかっている理由を絞り込むのに役立つかどうかはわかりません。私は他の人がわずか数秒で60k +行を投稿しているのを見ました。
Sub HarvestData()
Application.ScreenUpdating = False
Dim Connection As ADODB.Connection
Dim rs As ADODB.Recordset
Dim QT As Excel.QueryTable
Dim ConnectionString As String
Dim SQL As String
Set Connection = New ADODB.Connection
Set Rs1 = New ADODB.Recordset
'Making the call to the database
ConnectionString = Myconnectionstringishere
'The query that is being pulled
SQL = Sheets("SQL").Range("B13").Value
'This is executing the SQL query
Connection.Open ConnectionString
Rs1.Open SQL, Connection, adOpenForwardOnly, adLockReadOnly
'This is defining a location for the data to be pasted
Set Location = ActiveWorkbook.Sheets("Sheet1")
'This is pasting the data
Location.Range("b2").CopyFromRecordset Rs1
'These are closing the connections I opened
Rs1.Close
Connection.Close
Application.ScreenUpdating = True
End Sub
'Cells.NumberFormat =" @ "' – omegastripes
のようにターゲットセルをテキストとして最初にフォーマットしてみてください。 – Katie
は実際には1秒で実行されるクエリですか、それとも最初のレコードを返すだけの時間ですか?あなたがEOFを打つまでレコードセットをループすれば、どれくらいかかるのですか?これはローカルのデータソースですか? –