Здравствуйте! Скажите, есть ли способ (и какой) взять данные из БД Access и использовать их в Excel без предварительной выгрузки на лист, например для диаграммы (как в файле-примере). Нужно даже не решение данного конкретного вопроса (это просто пример), а общая, но конкретная информация, что бы я узнал в какую сторону искать решение. В примере есть БД, и файл с макросом, который строит диаграмму по данным из БД. БД только в архиве подошла по размеру.
Здравствуйте! Скажите, есть ли способ (и какой) взять данные из БД Access и использовать их в Excel без предварительной выгрузки на лист, например для диаграммы (как в файле-примере). Нужно даже не решение данного конкретного вопроса (это просто пример), а общая, но конкретная информация, что бы я узнал в какую сторону искать решение. В примере есть БД, и файл с макросом, который строит диаграмму по данным из БД. БД только в архиве подошла по размеру.ОлеггелО
взять данные из БД Access и использовать их в Excel без предварительной выгрузки на лист
Вы получаете данные из Access в виде набора записей (объекта DAO.Recordset): [vba]
Код
Set tabl = dbs.OpenRecordset(s_SQL) 'записал в tabl информацию, полученную запросом
[/vba] Этот рекордсет - это объект в памяти, с которым в памяти же, без выгрузки на лист, можно при помощи соответствующих библиотек (DAO или ADO) выполнять различные манипуляции: перебирать записи, сортировать их, фильтровать и т.п.
А вот, "например, для диаграммы" как раз, увы, не получится. Там в качестве источника данных надо указать объект Range, который как известно существует только на рабочем листе. Если бы достаточно было указать массив значений (т.е. Range.Value), то тогда можно было бы сформировать такой массив из данных рекордсета и подсунуть его диаграмме в качестве источника, но она, к сожалению, кушает только Range...
взять данные из БД Access и использовать их в Excel без предварительной выгрузки на лист
Вы получаете данные из Access в виде набора записей (объекта DAO.Recordset): [vba]
Код
Set tabl = dbs.OpenRecordset(s_SQL) 'записал в tabl информацию, полученную запросом
[/vba] Этот рекордсет - это объект в памяти, с которым в памяти же, без выгрузки на лист, можно при помощи соответствующих библиотек (DAO или ADO) выполнять различные манипуляции: перебирать записи, сортировать их, фильтровать и т.п.
А вот, "например, для диаграммы" как раз, увы, не получится. Там в качестве источника данных надо указать объект Range, который как известно существует только на рабочем листе. Если бы достаточно было указать массив значений (т.е. Range.Value), то тогда можно было бы сформировать такой массив из данных рекордсета и подсунуть его диаграмме в качестве источника, но она, к сожалению, кушает только Range...Gustav
рекордсет - это объект в памяти, с которым в памяти же, без выгрузки на лист, можно при помощи соответствующих библиотек (DAO или ADO) выполнять различные манипуляции: перебирать записи, сортировать их, фильтровать и т.п.
Вот это - то что мне нужно было! Дальше я сам. Спасибо!
Gustav, спасибо! Сегодня только понял, что с диаграммой пример возможно неудачный - Вы подтвердили мои сомнения.
рекордсет - это объект в памяти, с которым в памяти же, без выгрузки на лист, можно при помощи соответствующих библиотек (DAO или ADO) выполнять различные манипуляции: перебирать записи, сортировать их, фильтровать и т.п.
Вот это - то что мне нужно было! Дальше я сам. Спасибо!ОлеггелО