Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/242: Рейтинг темы: голосов - 242, средняя оценка - 4.88
2 / 2 / 0
Регистрация: 04.04.2012
Сообщений: 28

Импорт данных из Excel в Access

04.04.2012, 09:54. Показов 46141. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Я недавно сел за Access. У меня возник вопрос:
Как можно импортировать данные из Excel в Access, в которой уже есть готовая база?
Примеры Excel i Access, прикреплены ниже.

Я не особо знаком с функционалом Access, я попробовал импортировать без VB макросов.
Access импортирует все данные из Excel в виде одной таблицы. (я импортировал все списки городов и стран)
На сколько я понимаю для связи этих списков, нужно создать формы ввода, затем написать скрипты (макросы), которые будут вытягивать данные из Excel и вбивать в созданные формы.

Если у кого есть примеры подобного рода либо ссылки на полезные материалы, буду благодарен.

С уважением.
Миниатюры
Импорт данных из Excel в Access   Импорт данных из Excel в Access  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.04.2012, 09:54
Ответы с готовыми решениями:

Экспорт-импорт данных Excel-Access-Excel
Доброе время суток уважаемые форумчане. Приходит информация в экселевской таблице. Скидываю её в общую базу в Access. Для отчета...

Импорт данных из excel в access
Доброе время суток! При создании базы данных я столкнулся с проблемой, которую пока не могу решить, возможно я найду здесь ответ. Проблема...

Импорт данных из Excel в БД Access
Здравствуйте. Не первый раз сталкиваюсь с проблемой импорта данных. Из готовой таблицы Excel импортировать данные в готовую таблицу БД....

33
2 / 2 / 0
Регистрация: 04.04.2012
Сообщений: 28
06.04.2012, 14:53  [ТС]
Студворк — интернет-сервис помощи студентам
На счет шапок полей в Excele. Как можно разделить временный адрес от постоянного? Т.е. в примере двойная шапка. Можно импортировать таблицы с 2-мя шапками.
Я удалил верхние шапки: а кроме этого есть другой способ? У меня много Exceleвских фаилов везде исправлять тяжко будет.
Вложения
Тип файла: zip 111.zip (7.6 Кб, 53 просмотров)
0
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
06.04.2012, 19:37
Как я и говорила, импортируем сначала во временную таблицу, потом запросами получаем нужные числовые коды, добавляем данные в таблицы:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Êíîïêà0_Click()
'Îòêëþ÷èì ñèñòåìíûå ñîîáùåíèÿ
DoCmd.SetWarnings False
'Èìïîðòèðóåì èç ýêñåëÿ âî âðåìåííóþ òàáëèöó â òàêîì âèäå, êàê åñòü
DoCmd.TransferSpreadsheet acImport, , "Employee_Temp", CurrentProject.Path & "\111.xlsx", True
'Îáíîâëÿåì âî âðåìåííîé òàáëèöå ÷èñëîâîé êîä äîëæíîñòè è ÷èñëîâîé êîä ãîðîäà_ò
DoCmd.RunSQL "UPDATE (Employee_Temp INNER JOIN [Position] ON Employee_Temp.POSITION = Position.POSITION_NAME) LEFT JOIN City ON Employee_Temp.CITY_T = City.CITY SET Employee_Temp.POSITION_id = [Position]![POSITION_ID], Employee_Temp.CITY_T_id = [City]![COUNTRY_ID]"
'Îáíîâëÿåì âî âðåìåííîé òàáëèöå ÷èñëîâîé êîä ãîðîäà_ï
DoCmd.RunSQL "UPDATE Employee_Temp LEFT JOIN City ON Employee_Temp.CITY_P = City.CITY SET Employee_Temp.CITY_P_id = [City]![COUNTRY_ID]"
'Äîáàâëÿåì èç âðåìåííîé òàáëèöû â òàáëèöó Employee äàííûå î ñîòðóäíèêå: èìÿ, äàòó ðîæäåíèÿ, ÷èñëîâîé êîä äîëæíîñòè
DoCmd.RunSQL "INSERT INTO Employee ( EMPLOYEE_NAME, DATE_BIRTH, POSITION_id ) SELECT Employee_Temp.EMPLOYEE_NAME, Employee_Temp.DATE_BIRTH, Employee_Temp.POSITION_id FROM Employee_Temp"
'Îáíîâëÿåì âî âðåìåííîé òàáëèöå ÷èñëîâîé êîä ñîòðóäíèêà id_new èç òàáëèöû Employee
DoCmd.RunSQL "UPDATE Employee_Temp INNER JOIN Employee ON (Employee_Temp.DATE_BIRTH = Employee.DATE_BIRTH) AND (Employee_Temp.EMPLOYEE_NAME = Employee.EMPLOYEE_NAME) SET Employee_Temp.id_new = [Employee]![ID_NEW]"
'Îòáèðàåì èç âðåìííîé òàáëèöû íåíóëåâîé àäðåñ_ò è äîáàâëÿåì åãî â òàáëèöó Address ñ òèïîì àäðåñà = 1 è ñîîòâ-èì id_new
DoCmd.RunSQL "INSERT INTO Address ( id_new, CITY_ID, ADDRESS, ADDRESS_TYPE ) SELECT Employee_Temp.id_new, Employee_Temp.CITY_T_id, Employee_Temp.ADDRESS_T, 1 AS Adress_type FROM Employee_Temp WHERE (((Employee_Temp.ADDRESS_T) Is Not Null))"
'Àíàëîãè÷íî ñ àäðåñîì_ï
DoCmd.RunSQL "INSERT INTO Address ( id_new, CITY_ID, ADDRESS, ADDRESS_TYPE ) SELECT Employee_Temp.id_new, Employee_Temp.CITY_P_id, Employee_Temp.ADDRESS_P, 2 AS Adress_type FROM Employee_Temp WHERE (((Employee_Temp.ADDRESS_P) Is Not Null))"
'Î÷èùàåì âðåìåííóþ òàáëèöó
CurrentDb.Execute "Delete * From Employee_Temp"
'Íå çàáûâàåì âêëþ÷èòü ñèñòåìíûå ñîîáùåíèÿ
DoCmd.SetWarnings True
End Sub
Я отдельно сохранила запросы с номерами по порядку запуска 1,2,3,4,5,6, они в принципе не нужны, только для того, чтоб ты разобрался, как они работают.
Вложения
Тип файла: rar ИмпортЭксель.rar (36.0 Кб, 314 просмотров)
1
2 / 2 / 0
Регистрация: 04.04.2012
Сообщений: 28
06.04.2012, 23:37  [ТС]
Огромное спасибо!
Ты подарила мне неделю жизни! А может и две!
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
09.04.2012, 04:54
Цитата Сообщение от Ameli Посмотреть сообщение
DoCmd.SetWarnings False
Использовать это опасно. Если будет какой-либо сбой, то сообщения отключатся "навсегда", но никто об этом знать не будет. Я считаю, что лучше два варианта:
1. Пользуемся всегда CurrentDb.Execute и не заморачиваемся.
2. Идём в настройки и отключаем (так хоть знать будем и контролировать ситуацию):
Миниатюры
Импорт данных из Excel в Access  
1
2 / 2 / 0
Регистрация: 04.04.2012
Сообщений: 28
03.05.2012, 16:17  [ТС]
Доброе время суток!

Работа по импорту данных закончена. (Спасибо, Ameli)

В данный момент пытаемся создать формы ввода данных в базу. (форма Employee1)
Вроде все получалось, но по непонятной причине не получается изменить данные сотрудников (в частности, ФИО, должность и т.д., т.е. данные, находящиеся в главной таблице Employee (см. на схеме). Но можно изменить данные подчиненных таблиц, такие как Address, Образование), так же не удается добавить нового сотрудника.

Если кто знает причину,

Заранее благодарю.
0
2 / 2 / 0
Регистрация: 04.04.2012
Сообщений: 28
03.05.2012, 16:21  [ТС]
База здесь.
Вложения
Тип файла: zip Basa.zip (808.6 Кб, 129 просмотров)
0
 Аватар для Ameli
2096 / 1172 / 39
Регистрация: 05.11.2009
Сообщений: 1,605
03.05.2012, 21:49
Запрос-источник формы не обновляемый, все дело в таблицах Family_Info и Stazh. Они связаны с таблицей Employee связью "один-ко-многим". Может ли быть несколько записей в них для одного сотрудника? Если да, то делайте их подчиненными формами. Если нет, то перенесите поля из них в таблицу Employee.
В таблице Family_Info вообще не заполнено поле ID_NEW, по которому она связана с Employee.
0
2 / 2 / 0
Регистрация: 04.04.2012
Сообщений: 28
04.05.2012, 17:11  [ТС]
Цитата Сообщение от Ameli Посмотреть сообщение
Запрос-источник формы не обновляемый, все дело в таблицах Family_Info и Stazh. Они связаны с таблицей Employee связью "один-ко-многим". Может ли быть несколько записей в них для одного сотрудника? Если да, то делайте их подчиненными формами. Если нет, то перенесите поля из них в таблицу Employee.
Family_Info и Stazh связь "один-ко-многим" используется в случае -
1) Family_Info, если сотрудник развелся и женился/за муж вышла заново. Т.е. у сотрудника может быть 2 семьи; (Эти данные никому не нужны, в будущем возможно изменим)
2) Stazh - это что-то вроде трудовой книжки, если сотрудника перевели или повысили в должности надо хранить всю историю.

Цитата Сообщение от Ameli Посмотреть сообщение
В таблице Family_Info вообще не заполнено поле ID_NEW, по которому она связана с Employee.
В таблице Family_Info заполняется поле ID_NEW, просто я удалил всех сотрудников, но данные в Family_Info остались. ID_NEW сотрудников, которых я оставил заполняются.


Мы переделали все заново, теперь получается изменить все данные и добавить нового сотрудника.
Но у нас возникла другая проблема: при создании нового сотрудника все данные сохраняются кроме Пенсии и Армии. Т.е. данные о Пенсии и Армии сохраняются, но нет связи м\у Pension и Employee, а так же м\у Army и Employee. PENSION_ID и ARMY_ID, находящиеся в таблице Employee, не заполняются.

На сколько я понимаю, дело в связи между таблицами: Employee и Army, Employee и Pension. На самом деле связь между Employee и Army, Employee и Pension должна быть "один-ко-одному", но я так и не разобрался как сделать связь "1 к 1"

Ниже во вложении я добавил сотрудника Last. Все данные сохранились, но нет связи между Employee и Army, а так же между Employee и Pension.
Вложения
Тип файла: zip Basa36.zip (438.3 Кб, 109 просмотров)
0
14 / 14 / 0
Регистрация: 25.02.2012
Сообщений: 10
29.06.2012, 09:47
Добрый день. тоже озадачился импортом из excel. Можно ли сделать мой код короче?
Вложения
Тип файла: rar Импорт.rar (27.3 Кб, 232 просмотров)
0
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 191
13.01.2025, 21:04
Доброго вечера!
Задался вопросом в рамках этой темы, но вопрос, интересующий меня без заковырок: есть таблица Excel и ее нужно импортировать в таблицу Access. В приложенном в качестве примера файле есть код на кнопке, в котором я изменил лишь диапазон импортируемых данных. Всего 350000 строк, но вставляются только около 65000. Почему так и как это исправить?

Файл что-то не получается подгрузить...

Код на кнопке такой:
Visual Basic
1
2
3
Private Sub Кнопка0_Click()
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel5, "Импортированная", CurrentProject.Path & "\Для импорта", , "A2:T330000"
End Sub
0
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 819
13.01.2025, 21:54
попробуйте вместо acSpreadsheetTypeExcel5 использовать acSpreadsheetTypeExcel12 или acSpreadsheetTypeExcel12Xml если файл xlsx
0
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 191
13.01.2025, 21:57
Цитата Сообщение от Swa111 Посмотреть сообщение
попробуйте вместо acSpreadsheetTypeExcel5 использовать acSpreadsheetTypeExcel12
ошибку дает
0
919 / 292 / 58
Регистрация: 01.06.2023
Сообщений: 819
13.01.2025, 21:59
А какая версия офиса установлена?
0
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 191
13.01.2025, 22:02
Цитата Сообщение от Swa111 Посмотреть сообщение
А какая версия офиса установлена?
16 версия офиса
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2025, 22:02

Импорт данных из Access в Excel
Добрый день!!! Нужна помощь... Как поменять путь в эксель из акцесс. Дело в том что базу Акцес перенесли в другую сетевую папку,...

Импорт данных из Access в Excel
Доброго времени суток, подскажите пожалуйста, как можно осуществить импорт данных из Access в Excel причем не стандартным импортом и не...

Импорт данных из Excel в Access
Добрый день, очень нужна помощь. Как автоматически с помощью кода VBA (по нажатию кнопки) импортировать данные из определенной ячейки...

Импорт данных из Excel в Access
Доброго времени суток, уважаемые. Промлемка такая: нужно импортировать данные из таблицы Excel в базу данных Access и при том не все а...

Импорт данных из Excel в Access
Всех с наступающими! =) Проблема такая: есть база данных в access, есть в той же директории несколько книг excel под названием 1.xslm,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru