|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Подскажите, пожалуйста. Есть код в VBA для получения данных из другого файла Excel посредством SQL-запроса: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Код работает. Данные выгружаются. Можно ли как-то создать подключение/запрос, чтобы совмещать два разных файла Excel? Что-то вроде двух разных таблиц в одном запросе. Т.е. чтобы sql мог быть вроде: Код: sql 1. 2. 3. 4. 5.
Могу предположить, что надо создать два отдельных подключения на каждый excel-файл, но как их потом склеить в один запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 21:12 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
А что, этот вариант не работает? (если убрать, конечно, лишнюю кавычку) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 21:19 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
С кавычкой просто моя опечатка на форуме. У меня код не срабатывает: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Предполагаю, потому что я создал подключение "cn", которое свазано только с первым файлом (file_1.xlsx). А т.к. в запросе я использую еще и другой файл (file_2.xlsx), на к-ый не создано подключения, то и возникает ошибка. Как правильно сделать, не понимаю.. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 21:41 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Максим323, Попробутей так: Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 22:53 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Та же ошибка. Дело здесь не в синтаксисе (join или where), а в подключении к файлу. Если бы я работал с базой данных, то проблем не было. А в данном случае это два разных файла excel. При этом коннект создается только на первый файл и он же используется в дальнейшем. Я могу создать хоть два и более различных коннекта. Но как их использовать в одном запросе? Вот проблема. Ведь в конечном итоге я иницирую выполнение запроса командой rs.Open iSQL, cn . А здесь уже конкретная привязка к ранее созданному подлючению на первый файл. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 09:33 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Пиши в промежуточную таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 12:12 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Вроде, должно работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 16:09 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Максим323, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 17:04 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
скукотища, Только CopyFromRecordset формат ячеек испортит. Лучше результат запроса занести в массив (rs.GetRows) и далее вынести данные в диапазон (myRange.Value = myArrayVariable) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 22:11 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Максим323, Боюсь, что Вы не правы касательно причины ошбики. В моем примере все работает как и должно, который предлагаю Вашему вниманию. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 22:45 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Максим323, Рискну предположить, что дело может быть в следующем: 1) Версия Office на компьютере, на которым Вы тестируете, ниже 2007. 2) Структура запрашиваемых данных не соответствует запросу. 3) Неверный путь к файлам или листам. Будет проще помочь, если Вы дадите конкретный пример с Вашими файлами. Кстати, Вы так и не озвучили ошибку, равно как и строку, на которой она возникает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 23:08 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Извиняюсь. Немного выпал из диалога. Проверил. Я напутал в своих файлах что-то. Разбираться не стал. Поправил, исходя из примера iMrTidy и все заработало :) Спасибо всем большое за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2014, 01:28 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Подскажите еще, пожалуйста, по коду: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Сейчас в строках Код: vbnet 1. 2.
я указал названия конкретных листов в книге. В данном случае лист `data`. Можно ли как-то задать листы номерами? Что-то вроде: `C:\Users\file_1.xlsx`.sheets(5) и тп. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2014, 17:19 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Сделал пока определение имени листа дополнительным запросом к файлу-источнику: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Если кто значет способ, как через конкретные номера листов, буду признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2014, 18:47 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Максим323, Понимая, что тема скорее не жива... Но вдруг.. Подскажите пожалуйста код (точне текст sql запроса) INSERT через adodb для вставки новой строки со значениями в файл excel. Использую execute. SELECT работает, а INSERT нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2015, 20:53 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
операции изменения данных не поддерживаются ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2015, 21:12 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Доброе время суток Insert и Update для файлов Excel поддерживаются. Не работает только Delete. Вставка работает, если данные строго структурированных. Если задан диапазон листа, то вставка работает только в том случае, если ниже этой области ничего нет. Иначе вставка будет заблокированна. Bobgos Вы бы привели пример файла, строку подключения и текст вставки, тогда было бы проще что-то советовать. Файл для примера во вложении. Естественно вставку и обновление можно делать и через Recordset ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2015, 07:53 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Shocker.Proоперации изменения данных не поддерживаются я что-то такого не слышал. По крайней мере, в OLEDB можно было делать UPDATE вот к примеру Running a SQL Update Query in Excel VBA ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2015, 08:04 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
HandKotShocker.Proоперации изменения данных не поддерживаются я что-то такого не слышал. По крайней мере, в OLEDB можно было делать UPDATEгм, возможно, этого нельзя было делать в ODBC..., помню, что мы обсуждали это когда-то на форуме, тады - ой, виноват. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2015, 09:16 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
anvgДоброе время суток Insert и Update для файлов Excel поддерживаются. Не работает только Delete. Вставка работает, если данные строго структурированных. Если задан диапазон листа, то вставка работает только в том случае, если ниже этой области ничего нет. Иначе вставка будет заблокированна. Bobgos Вы бы привели пример файла, строку подключения и текст вставки, тогда было бы проще что-то советовать. Файл для примера во вложении. Естественно вставку и обновление можно делать и через Recordset anvg,спасибо. оказывается забыл в квадратные скобки имя таблицы вставить. :-) файл в жутком беспорядке - не хотел и выкладывать. но раз просите... ? А для чего: Код: plsql 1.
????? и может заодно для удаления записи из таблицы подскажете решение? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2015, 22:39 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
HandKotShocker.Proоперации изменения данных не поддерживаются я что-то такого не слышал. По крайней мере, в OLEDB можно было делать UPDATE вот к примеру Running a SQL Update Query in Excel VBA а если OLEDB не вариант и нужно использовать ADO? как обновлять? если обновлять рекордсет появляется сообщение об ошибке. -прилагаю ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2015, 23:23 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
И еще вопросы: 1. в vba можно ли рекордсет положить на форму и связать с listbox, а лучше listview? 2. как заполнить Listview из рекордсета. Можно ли как-то оперативно, не добавляя построчно? 3. все же как обновлять записи. по кнопке удалить - даже если не удалять, а делать неактивным по кнопке сохранить - обновить по текущим данным полей по кнопке добавить - спасибо будем разбираться дальше разберемся, но хотелось бы не переделывать запросы, если в таблицу добавится несколько полей. посоветуете? файлик прилагаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2015, 23:33 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
Доброе время суток Bobgosфайл в жутком беспорядке - не хотел и выкладывать. но раз просите... Да, в этом случае проще самому пример написать;) Разбирайте код. Не забудьте посмотреть в "Имена" на листе Table. Успехов ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2015, 03:29 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
anvg, то что надо. спасибо большое. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2015, 06:03 |
|
VBA Excel и ADODB.Connection
|
|||
---|---|---|---|
#18+
BobgosHandKotпропущено... я что-то такого не слышал. По крайней мере, в OLEDB можно было делать UPDATE вот к примеру Running a SQL Update Query in Excel VBA а если OLEDB не вариант и нужно использовать ADO? как обновлять? если обновлять рекордсет появляется сообщение об ошибке. -прилагаю OLEDB - это драйвер доступа ADO - технология доступа, который использует различные драйвера от ODBC до ... по ошибке, у Вас не обновляемый рекордсет. Тут надо смотреть почему ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2015, 08:27 |
|
|
start [/forum/topic.php?fid=61&msg=38780772&tid=2173538]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 150ms |
0 / 0 |