|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
Добрый день, господа. Вопрос следующий: в Access импортируются таблицы Excel с помощью обычного SELECT'a из листа - Код: sql 1.
Проблемы возникают, когда в Excel файле попадаются столбцы с нестандартными именами, содержащими в себе, например, точки. Каким образом можно перед импортом открыть файл, c помощью REPLACE заменить точки на пробелы, и импортировать из уже отредактированного файла, не сохраняя его, чтобы не испортить исходник? Методы типа DoCmd.TransferSpreadsheet и "поячеечного" чтения не подходят, поскольку таблица содержит несколько десятков столбцов и около полумиллиона строк, что делает эти методы не совсем подходящими из-за времени выполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 14:09 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
Честно - я не спец по Excel, но приглядевшись к коду, я подумал, что надо, просто, игнорировать заголовки столбцов, т.е., вместо HDR=Yes объявить HDR=No ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 15:02 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
В таком случае придется использовать вместо имен столбцов Excel файла F1, F2... и т.д., что неприемлимо, поскольку столбцов слишком много и можно надолго засесть, учитывая что импортить нужно не одну таблицу. Неужели нельзя все сделать проще? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 15:12 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
Да, забыл добавить, что импортить нужно не все столбцы, что усложняет задачу с применением F1, F2...F N ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 15:17 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
SiNtez_26 перед импортом открыть файл, c помощью REPLACE заменить точки на пробелы, и импортировать из уже отредактированного файла, не сохраняя его, чтобы не испортить исходник? А нельзя ли во временный файл сохранить с реплейсами и затем уже импортировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 18:15 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
SiNtez_26 Каким образом можно перед импортом открыть файл, c помощью REPLACE заменить точки на пробелы, и импортировать из уже отредактированного файла, не сохраняя его, чтобы не испортить исходник? Методы типа ... "поячеечного" чтения не подходят ... Тогда не понятно что вы хотите? Нужно ведь не весь файл считывать а только заголовки столбцов и сделать в них REPLACE. Лично у меня DoCmd.TransferSpreadsheet импортирует файлы в районе 500к строк (порядка 10 полей) за пару десятков секунд, при этом точку заменяет на # автоматом (после импорта можно заменить на любой символ). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 23:29 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
BigSergSSP... Лично у меня DoCmd.TransferSpreadsheet импортирует файлы в районе 500к строк (порядка 10 полей) за пару десятков секунд, при этом точку заменяет на # автоматом (после импорта можно заменить на любой символ). А как после импорта для всех названий полей в таблице символ # по-быстрому на что-то иное заменить? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2013, 08:57 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
грязный комплектовщик, Например, вот так: Код: vbnet 1.
Но существует и другие способы ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2013, 17:32 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
BigSergSSPНапример, вот так: Код: vbnet 1.
или вот так: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2013, 17:37 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
BigSergSSPНапример, вот так: Код: vbnet 1.
Спс, отлично сработало. Для вар-тов кучи полей в исходных эксельках самое то. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2013, 12:40 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
или вот так: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2013, 21:00 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
BigSergSSPили вот так: ... Туда-же. В топку. :) зы: Вытаскивайте CurrentDB из цикла, кешируйте ссылку на TableDef. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2013, 21:52 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
nord-woolfзы: Вытаскивайте CurrentDB из цикла, кешируйте ссылку на TableDef. Покажи... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 01:05 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 09:17 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
nord-woolf, И в чем принципиальная разница? (кроме оформления кода) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 17:43 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 17:59 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
Если в цифрах, то: Табличка (пустая) о 10 текстовых полях (в именах нет решеток) Тестовая процедура: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Результаты четырех замеров: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Так принципиальная разница заметнее? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 18:18 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 18:18 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
BigSergSSPСхБдBigSergSSP, сорри 14613477 По существу, пожалуйста... а чо там не посуществу чем плохо (с) ...Вытаскивайте CurrentDB из цикла.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 18:27 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
nord-woolf, Убедительно! :)) Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 18:41 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
Импортирую данные из Ёкселевского файла "Файл.xls" с листа "Лист" в таблицу "Табл" базы MSA таким запросом: Код: plaintext 1. 2. 3.
Всё работает прекрасно. Не могу придумать, как в этом же запросе в дополнительное поле "ДатаВремя" таблицы "Табл" записать дату/время выполнения этого запроса, т.е. дату/время импорта данных. Что нужно добавить в текст запроса, чтобы во все записи таблицы "Табл" в поле "ДатаВремя" заносилось значение функции Now()? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 16:35 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
s = "Insert into Табл select *, Now() As ДатаВремя from [Лист$A1:D500] IN 'Файл.xls' [Excel 5.0;HDR=YES;IMEX=1] where Поле1 > 0 CurrentDb.Execute s ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2013, 11:40 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
То Анатолий ( Киев )! Два дня ждал отклика от ДОБРЫХ людей! Спасибо, всё получилось!!!!!!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2013, 00:50 |
|
Импорт Excel таблиц в Access (VBA)
|
|||
---|---|---|---|
#18+
ИВП, Импортирую данные из Ёкселевского файла "Файл.xls" с листа "Лист" в таблицу "Табл" базы MSA таким запросом: s = "Insert into Табл select * from [Лист$A1:D500] IN 'Файл.xls' [Excel 5.0;HDR=YES;IMEX=1] where Поле1 > 0 CurrentDb.Execute s Мне нужно создать запрос в VBA на добавление данных их таблицы Excell в Acces. Используя ваш вышеперечисленный способ выходит ошибка "Object required" Что не так делаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 14:09 |
|
|
start [/forum/topic.php?fid=45&fpage=30&tid=1610624]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 349ms |
total: | 480ms |
0 / 0 |