Новое в программировании, SQL и VBA.Я часто работаю с таблицами данных приличного размера и думал, что было бы полезно добавить возможность выполнения SQL-запросов для применения к существующей таблице Excel.Исследования привели меня к соединениям ADODB и обнаружили здесь отличный базовый фрагмент: https://blog.learningtree.com/excel-as-a-database-how-to-query-economic-data-with-sql/
Кажется, я сталкиваюсь с ограничениями на количество доступных строк до запуска следующей строки кода.В моем источнике оператора SQL я могу вернуть 65 тысяч строк, больше при определении размера исходной таблицы, и я получаю ошибку Object is not Существует.Можете ли вы запустить ADODB recordset.Open
асинхронно, чтобы обеспечить полный возврат объекта?- Любая помощь будет очень высоко ценится.Спасибо!
попытался вставить WAIT inline: rs.Open strSQL, Application.Wait (Now + TimeValue("0:00:30")), cn
, но ошибки все равно отсутствуют.См. Код ниже
Sub ExcelTbl_SQL()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
strFile = ThisWorkbook.FullName
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
strSQL = "SELECT * FROM [Sheet1$A1:AI146103] WHERE GROUP = 'HIX'"
rs.Open strSQL, cn
Dim ws As Worksheet
Set ws = Application.Sheets.Add
ws.Range("A1").CopyFromRecordset rs
rs.Close
cn.Close
'Debug.Print rs.GetString
End Sub
Вот результаты, которые я получаю:
Ошибка времени выполнения '-2147217865 (80040e37)': ядру базы данных Microsoft Access не удалось найти объект «Лист1 $ A1: AI65437».