Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 06.08.2021
Сообщений: 8

Запрос ADODB.Recordset, источник – именованная таблица excel

06.08.2021, 09:35. Показов 3445. Ответов 8

Студворк — интернет-сервис помощи студентам
Добрый день Форумчане.

Недавно решал задачу с получением данных с помощью ADODB.Recordset только источник был весь лист книги Эксель.

Есть ли возможность в запросе указывать источником не весь лист эксель а именованную таблицу?

Подскажите пожалуйста очень нужно !!!

В приложении файл с работающим запросом ко всему листу книги.

Макрос выполняется по кнопке "Фильтр" на Листе.

Результатом запроса является подсчёт количества строк в полученной таблице. Конечная цель конечно не простой подсчёт количества, я потом буду эти строки перебирать в цикле и анализировать.

Строка самого запроса


Visual Basic
1
2
sql_text = "Select f5,f6,f7,f8,f9,f10,f11 From [" & list_dannie & "$] 
Where (f9 > #" & Format(data1, "MM\/dd\/yy hh\:mm\:ss") & "#) and (f9 < #" & Format(data2, "MM\/dd\/yy hh\:mm\:ss") & "#)"
list_dannie – переменная типа String в ней хранится имя листа с которого происходит выборка данных.

table_istochnik - переменная типа string в которой хранится имя таблицы из которой нужно получить данные

Вопрос в том как использовать в запросе переменную table_istochnik вместо list_dannie .

Перепробовал кучу разных вариаций ничего не получается.

Может хотя бы подскажите в какую сторону "Рыть". И вообще возможно это или нет ?

Буду благодарен за советы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.08.2021, 09:35
Ответы с готовыми решениями:

Работа с Adodb.recordset Excel. Выборка
Доброго всем дня. Вот мучаюсь уже некоторое время, никак не могу разобраться. Видимо не замечаю ошибки или чего. Формирую recordset с...

Recommended style: Private rstOrder As ADODB.Recordset Set rstOrder = New ADODB.REcordset
Ошибка такая Object variable or With block variable not set. Код такой: Private rstOrder As ADODB.Recordset Private Sub ... ...

Передать параметры в sql запрос (ADODB.Recordset)
как передать параметры в select те в Delphi Это бы так выглядило str:='select * from tableName where pole1=:1' ...

8
0 / 0 / 0
Регистрация: 06.08.2021
Сообщений: 8
06.08.2021, 09:39  [ТС]
Прошу прощения забыл вложить файл.
Вложения
Тип файла: rar 5.rar (25.7 Кб, 10 просмотров)
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
06.08.2021, 11:03
Цитата Сообщение от Aivan89 Посмотреть сообщение
Вопрос в том как использовать в запросе переменную table_istochnik вместо list_dannie .
Напрямую не получится, т.к. таблица - вложенный элемент листа.
У меня макрос не запускается и не хочет включаться. Проверить не могу. Предположительно, надо обращаться к листу
Visual Basic
1
"SELECT .... FROM [Sheet1$A:B]........."
Имя листа, понятно, надо разобраться, что означает запись "A:B" и можно ли использовать вместо неё имя таблицы.
0
0 / 0 / 0
Регистрация: 06.08.2021
Сообщений: 8
06.08.2021, 11:25  [ТС]
Чтобы макрос заработал нужно ещё включить одну библиотеку.
В Визуальном редакторе зайти в Tools - Reference
И включить библиотеку "Microsoft ActiveX Data Objects 6.1 "

Вопрос не в переменной как таковой а вопрос в том как обратится в запросе не к листу а напрямую к таблице .
Миниатюры
Запрос ADODB.Recordset,  источник – именованная таблица excel  
Изображения
 
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
06.08.2021, 12:22
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Цитата Сообщение от Aivan89 Посмотреть сообщение
как обратится в запросе не к листу а напрямую к таблице
Я же написал, что таблица является вложенным (дочерним) элементом листа, что означает, что надо обращаться последовательно. Например, в VB 6.0:
Visual Basic
1
2
3
     Set XLIn = CreateObject("Excel.Application")
'Открываем файл Excel
        Set xla = XLIn.Workbooks.Open(FileNam)
В переменной "xla" содержится Workbooks. Чтобы обратиться к листу надо указать:
Visual Basic
1
xla.ActiveSheet
или
Visual Basic
1
.xla.Sheets(номер или имя)
VB 6.0 изначально не знает имён. Он знает строки, столбцы и ячейки. Т.е. после назначения листа, надо добавить обращение к таблице. Workbooks.Sheets.таблица.
Допускаю, что в VBA таблица может быть в свойствах документа. В VB 6.0, которому посвящена данная ветка форума, таблицы не может быть по условию, т.к он внешний по сравнению с VBA, который находится в книге, с которой производятся действия.
1
0 / 0 / 0
Регистрация: 06.08.2021
Сообщений: 8
06.08.2021, 13:01  [ТС]
Спасибо за совет.
Вы правы, задам вопрос в другой ветке.
Только зарегестрировался ещё не разобрался как что работает.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
06.08.2021, 13:08
Не за что.
Суть в том, что вам надо указать полный путь к таблице, так же, как и полный путь к файлу на диске.
И обращаться к свойствам и методам таблицы, если таковые имеются.
0
0 / 0 / 0
Регистрация: 06.08.2021
Сообщений: 8
06.08.2021, 13:24  [ТС]
В этом и загвоздка что нужно указать полный путь к таблице
- нужно понимание так вообще можно обратиться или нет . Может это не предусмотрено. Возможно запрос работает только с Листа.
- А если можно то каков правильный синтаксис. Я тоже пытался по разному пробовать обратиться к таблице через Книга.Лист.Таблица и много, много разных вариантов но не зная правильного синтаксиса ничего не получается.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
06.08.2021, 17:31
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Тут что-то есть:
https://xltools.net/ru/sql-queries-in-excel/
https://www.planetaexcel.ru/fo... &TID=65191
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.08.2021, 17:31
Помогаю со студенческими работами здесь

Импорт данных из Access в Excel с использованием объекта Recordset библиотеки ADODB
'Option Explicit Sub AccessToXL() Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim myconn As String Dim TARGET_DB As...

Обращение к данным в БД. Ошибка: Объект не является ни ADODB.RecordSet, ни ADODB.Record
при созданиие приложения в коде у меня возникла ошибка подскажите суть проблемы string strConn, strSQl; ...

XML->ADODB.Stream->ADODB.Recordset
Пытаюсь настроить XML-&gt;ADODB.Stream-&gt;ADODB.Recordset Подаю ПРАВИЛЬНЫЙ XML на вход ниже приведенной функции а рекордсет получаю...

XML->ADODB.Stream->ADODB.Recordset
Пытаюсь настроить XML-&gt;ADODB.Stream-&gt;ADODB.Recordset Подаю ПРАВИЛЬНЫЙ XML на вход ниже приведенной функции а рекордсет получаю...

Какие библиотеки содержат классы: Dim Con1 As ADODB.Connection Dim Rec1 As ADODB.Recordset ?
Какие библиотеки содержат эти классы: Dim Con1 As ADODB.Connection Dim Rec1 As ADODB.RecordsetГде их взять? С уважением,


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru