Страницы: 1
RSS
Объект не найден ядром СУБД Access, Объект не найден ядром СУБД Access
 
Добрый вечер, уважаемые форумчане!
Помогите, пожалуйста, вот с таким вопросом.
Есть 2 листа - "список 1" и "список 2". На листе "Общий список" я формирую общий список из двух диапазонов. При малых объемах диапазонов макрос отрабатывает без ошибок. Сейчас столкнулся с тем, что если в каком-либо списке появляется большое количество данных, точнее, если диапазоны данных велики (как на листе "Список 1"), то макрос выдает ошибку:
"Run-time error '-2147217865 (80040e37)':
Объект "Список_1$G6:G135105" не найден ядром СУБД Microsoft Access. Убедитесь, что объект существует, а его имя и путь к нему указаны правильно. Если объект "Список_1$G6:G135105" не является локальным, проверьте сетевое подключение или обратитесь в администратору сервера."
Помогите, пожалуйста, разобраться с данной ошибкой.
Повторюсь, что макрос при малых диапазонах отрабатывает корректно.
В приложенном примере из-за размера файла пришлось удалить часть данных на листе "Список 1".
Заранее, огромное спасибо за любой совет!
 
А так?
Код
   Sub Список()
  
    Dim rst As Object
    Dim iconnection As Object
    Dim cnct$, iSelect$
    
    Application.ScreenUpdating = False
    
    Set rst = CreateObject("ADODB.Recordset")
    Set iconnection = CreateObject("ADODB.Connection")
    
    iSelect = "SELECT a.F1 AS col1 FROM [Список_1$] AS a UNION SELECT b.F1 AS col2 FROM [Список_2$] AS b ORDER BY col1"
    cnct = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=NO"""
    iconnection.ConnectionString = cnct
    iconnection.Open
    With rst
        .Open iSelect, iconnection
    End With
    Worksheets("Общий_список").Range("A2").CopyFromRecordset rst
    
    Application.ScreenUpdating = True
    MsgBox "Обработка данных завершена"
End Sub
Изменено: Nordheim - 17.10.2018 22:29:03
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, спасибо!
Подскажите, пожалуйста, как сделать так, чтобы заголовок "Список 2" не попадал в "Общий список"?
 
кроссище
По вопросам из тем форума, личку не читаю.
 
Nordheim, огромное спасибо за решение!
 
Может в Selecte прописать, я не силен в SQL, на столько , что бы разобраться в Вашем файле. что и откуда вы тянете.
Вот это для меня загадка a.F1
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
a.F1
Это при запросе к таблице без заголовка.
По вопросам из тем форума, личку не читаю.
 
Цитата
Leojse написал:
чтобы заголовок "Список 2" не попадал в "Общий список"
Если у вас в поле должны быть только числа, то можно отсечь таким образом:
Код
SELECT c.[col1] FROM (SELECT a.F1 AS col1 FROM [Список_1$] AS a UNION SELECT b.F1 AS col2 FROM [Список_2$] AS b) c WHERE IsNumeric(c.[col1]) = True
 
Цитата
Leojse написал:
чтобы заголовок "Список 2" не попадал
ну так как HDR=NO то все что есть  это данные, вот этот заголовок и становится данными, если в первом примере диапазон задавался без заголовка, то во втором с ним. Но мне кажется Елена в кросе уже помогла, или я не прав?
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Но мне кажется Елена в кросе уже помогла
Мне тоже так показалось, поэтому даже вникать не стал.  :D
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1
Наверх