Страница 1 из 1
Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 12:04
CaptainBlack
По работе часто приходится импортировать в Excel, информацию из Access файлов с абсолютно одинаковой структурой. Только сами данные и количество записей разные.
Импортировать нужно именно в Excel - пожалуйста не предлагайте создание отчетов непосредственно в Access.
Данные импортируются из нескольких таблиц одной Access БД - каждая таблица должна импортироваться в отдельный worksheet.
Q: Как сделать в Excel шаблон отчета, с возможностью "на лету" выбирать ODBC DSN из которого будут импортироваться данные?
Что то типа такого:
1. открыл шаблонную workbook в Excel
2. выбрал ODBC DSN по имени (scroll list?)
3. данные из БД закачались в Excel
4. сохранил шаблонный Excel workbook под новым именем и переслал другому человеку.
5. goto step 1
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 15:09
pek
Можно рученками заполнить список источников данных и выбирать из него.
Или список постоянно меняется (дополняется)?
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 15:23
CaptainBlack
pek писал(а):Можно рученками заполнить список источников данных и выбирать из него.
Или список постоянно меняется (дополняется)?
ну да...иногда добавляется новый файл (и DSN соответственно), иногда приходит новый Access файл для уже существующего DSN
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 15:23
Yury
я как-то в подобных целях использовал неэлегантное, но работавшее решение-
тупо менял имя нужного мне источника данных на использовавшееся в икселевском database query и жал кнопку refresh data
voila tout!
по хорошему можно было б и на vba формочку написать,
которая б меняла источник данных на выбранный из списка,
но было лениво
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 15:29
Yury
pek писал(а):Можно рученками заполнить список источников данных и выбирать из него.
Или список постоянно меняется (дополняется)?
несложно получить этот список вызвав odbc32.dll из кода формы
или скачать odbctool.dll, с ней еще проще
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 15:45
pek
Но когда появляется еще одна аксессовская база, то все равно источник данных то приходиться ручонками добавлять.
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 15:57
Yury
pek писал(а):Но когда появляется еще одна аксессовская база, то все равно источник данных то приходиться ручонками добавлять.
не обязательно ручонками
можно, скажем, при запуске формы сканить содержимое определенной папки и если там появился новый mdb файл - автоматически генерить для него system dsn (используя ODBCCP32.DLL), ну и в список выбора добавлять, разумеется
хотя на самом деле DSN - это вообще лишний шаг
проще заливать данные напрямую из аксеса через ADODB соединение
(если только DSN не нужен еще для чего нибудь)
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 16:00
pek
В условии не сказано что все базы лежат в одной папке (одном компутере, одном сервере и т.п.)

Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 17:27
CaptainBlack
pek писал(а):В условии не сказано что все базы лежат в одной папке (одном компутере, одном сервере и т.п.)

Один ПК - разные папки
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 17:44
CaptainBlack
Yury писал(а):я как-то в подобных целях использовал неэлегантное, но работавшее решение-
тупо менял имя нужного мне источника данных на использовавшееся в икселевском database query и жал кнопку refresh data
voila tout!
по хорошему можно было б и на vba формочку написать,
которая б меняла источник данных на выбранный из списка,
но было лениво
Вообщем то я так и делаю
Просто подумал - может кто кто элегантнее придумал...
Re: Как подменить ODBC DSN в Excel файле?
Добавлено: 11 мар 2009, 22:44
pek
Скинь Excel query, может чего нибудь придумаем получше.