Я нашел этот код в Интернете, чтобы запросить доступ и ввод данных в Excel (2003), но гораздо медленнее, чем это должно быть:VBA: запрос доступа с помощью Excel. Почему так медленно?
Sub DataPull(SQLQuery, CellPaste)
Dim Con As New ADODB.Connection
Dim RST As New ADODB.Recordset
Dim DBlocation As String, DBName As String
Dim ContractingQuery As String
If SQLQuery = "" Then
Else
DBName = Range("DBName")
If Right(DBName, 4) <> ".mdb" Then DBName = DBName + ".mdb"
DBlocation = ActiveWorkbook.Path
If Right(DBlocation, 1) <> "\" Then DBlocation = DBlocation + "\"
Con.ConnectionString = DBlocation + DBName
Con.Provider = "Microsoft.Jet.OLEDB.4.0"
Con.Open
Set RST = Con.Execute(SQLQuery)
Range(CellPaste).CopyFromRecordset RST
Con.Close
End If
End Sub
Проблема заключается в том, что этот код занимает очень много времени. Если я открою Access и просто запустил запрос, он займет около 1/10 времени. Есть ли способ ускорить это? Или по какой-либо причине это может занять так много времени? Все мои запросы - это простые запросы выбора с простыми инструкциями и объединениями. Даже запрос «select * from [test]» занимает гораздо больше времени, чем нужно.
EDIT: Я должен указать, что линия «Range (CellPaste) .CopyFromRecordset RST» была длительной.
При запуске в режиме перехода по экрану, какая строка кода занимает больше времени? – shahkalpesh
Диапазон (CellPaste) .CopyFromRecordset RST – Dan
Сколько записей вы извлекаете? – Thorsten