MyTetra Share
Делитесь знаниями!
импорт из Excel в Access
16.03.2019
23:43
Текстовые метки: Access, VBA access, спецификации
Раздел: !Закладки - VBA - Access - Спецификации

Всем привет, скажите пожалуйста есть ли вариант импортировать данные из Excel в Access? встроенные вариант импорта в Accesse меня не устраивает потому что там создается новая таблица а мне нужно импортировать в уже существующую базу, причем поля в Excel и в Access отличаются, может можно каким нибудь SQL запросом импортировать и указать что и в какие поля импортировать?



Как вариант, можно создать связь с листом Excel, а после работать сним как стаблицей

Код:

CurrentDb.Execute "INSERT INTO Таблица1 ( 1, 2, 3, 4 ) SELECT Лист1.F2, Лист1.F3, Лист1.F4, Лист1.F1 FROM Лист1"


добавление данных Таблица1 данными Лист1, в примере я поменял местами поля при добавлении



а что означает например F1. F2 итд? мне это не понятно, это название столбца?
и как именно создать связь с Excel? можно мне пошагово пожалуйста если не затрудник?просто я так еще не делал



F1, F2, ... - да это столбцы
Связь создается также как и импорт из Excel, только надо выбирать не "импортировать данные в новую таблицу", а "создать связанную таблицу для связи с источником данных", данные в ексельке могут меняться изменения будут видны в базе



Здравствуйте betirsolt
Для получения данных с листа Excel или диапазона листа, не обязательно подключаться к файлу.
Данные могут быть получены подобными SQL конструкциями:

Код:


SELECT * FROM [Лист1$] IN "C:\Users\1\Desktop\File.xls" "Excel 8.0; HDR=Yes;"


SELECT * FROM [Excel 8.0; HDR=No;DATABASE=C:\Users\1\Desktop\File.xls].[Лист1$A2:e500]


..[Лист1$].. - считывает данные со всего листа
..[Лист1$A2:e500].. - с заданного диапазона
HDR=No - указывает, что источник не содержит заголовков (имен полей) и им автоматически присваиваются имена F1, F2,...FN
присутствие HDR=Yes (или отсутствие HDR=..) говорит о том, что первая строка содержит заголовки

Соответственно запрос на добавление может выглядеть так:

Код:

INSERT INTO Таблица1 ( Field1, Field2, Field3, Field4 )

SELECT F1, F2, F3, F4 FROM [Excel 8.0;HDR=No;DATABASE=C:\...\File.xls][Лист1$A2:e500]


Евгений.



Евгений не могли бы вы дать пример прямого запроса на импорт из Excel c условием импорта (например поле F2=22), пример со связанной екселькой:

Код:

INSERT INTO Таблица1 ( 1, 2, 3 )

SELECT Лист1.F1, Лист1.F3, Лист1.F4

FROM Лист1

WHERE (((Лист1.F2)=22));


ставилась такая задача, вышел из положения этим способом
пытался переработать вашу конструкцию - акцес ругается на длину, похоже я чего-то недопонимаю...



теперь по вашему варианту пытаюсь сделать вот такой запрос

Код:

INSERT INTO Обратившиеся ( Дата_обращения, Телефон, Текст_обращения, Категория, Район )

SELECT Лист1.F1, Лист1.F2, Лист1.F3, Лист1.F4, Лист1.F5

FROM Лист1;


ошибок не выдает но показывает окошко где предлагает ввести мне значения полей

Код:

Лист1.F1, Лист1.F2, Лист1.F3, Лист1.F4, Лист1.F5


а мне нужно импортировать все как есть, что нужно сделать?



Проверьте название полей в присоедененой таблице "Лист1", возможно они называюттся не "F..."
Поповоду ошибки "ядро базаданных не может найти..." - поставьте точку между квадратных скобок, пример

Код:

INSERT INTO Таблица1 ( 1, 2, 3, 4 )

SELECT F1, F2, F3, F4

FROM [Excel 8.0;HDR=No;DATABASE=D:\Документы\Desktop\123.xlsx].[Лист1$A1:D2];


Евгений можее не отвечать, спасибо, разобрался

Код:

INSERT INTO Таблица1 ( 1, 2, 3, 4 )

SELECT F1, F2, F3, F4

FROM [Excel 8.0;HDR=No;DATABASE=D:\Документы\Desktop\123.xlsx].[Лист1$A1:D2]

WHERE (((F2)=22));



вроде все получилось

Код:

INSERT INTO Обратившиеся ( Дата_обращения, Телефон, Текст_обращения, Категория, Район )

SELECT Лист1.F1, Лист1.F2, Лист1.F3, Лист1.F4, Лист1.F5

FROM Лист1;


всем большое спасибо

 
MyTetra Share v.0.52
Яндекс индекс цитирования