Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229

Необходима консультация по поводу организации взаимодействия Access и Excel

02.03.2016, 17:35. Показов 2007. Ответов 24
Метки нет (Все метки)

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

Есть мебельный салон, который имеет склад, производственный цех и т.д. Соответственно салон работает с поставщиками (закупка товара) и покупателями (заказы на производство мебели). В принципе, стандартная складская схема работы.
Весь складской учет я сделал, само собой, в базе Access.

Но вот что касается именно калькуляции, расчета размеров изделий (всякие там шкафы, столы и т.д.), то у заказчика есть неплохие наработки в виде экселевских файлов-шаблонов, в которых формулами забиты все эти расчеты количества необходимых материалов исходя из размеров шкафа и т.д.

Поскольку заказчик весьма дорожит этими наработками (да и я сам, если честно, особо не горю желанием перетаскивать все эти расчеты в базу, т.к. с этим делом можно загребтись надолго (а этих шаблонов довольно таки много, и в каждом - свои принципы расчета), да и незачем изобретать велосипед), то было решено делать "связку" базы с экселевскими файлами. То есть к каждому заказу в базе привязывается адрес экселевского файла, в котором лежит вся калькуляция. Зашел в базу, открыл карточку нужного заказа, нажал кнопку - и открылся соответствующий ему экселевский файл.

До этого момента все пока что ясно и прозрачно.

А вот дальше начинаются вопросы.

Заказчик хочет, чтобы подбор комплектующих в заказ происходил тоже в Экселе. То есть там в файле будет отдельный лист, куда нужно будет добавлять товары со склада (то есть данные туда будут браться из базы Акса).
Я так понимаю, мне нужно будет в экселевском файле как-то организовать связь с таблицей товаров из Акса? Почитал в инете на предмет этого, нашел как добавить подключение, только вот не совсем понял - в экселевском файле на отдельном листе создастся копия таблицы Товары из базы?.. Или же можно просто установить связь без копирования всей таблицы (т.к. она очень большая и в файле заказа не нужна абсолютно)?
Я так вижу, было бы идеально сделать добавление товара в определенный столбец экселя путем выбора товара из выпадающего списка (а источником данных для списка как раз и должна быть таблица Товары из базы Акса). Это же можно сделать в Экселе?..

Вторая часть вопроса.
Допустим, пользователь понавыбирал товары в Экселе, проставил нужное количество - и теперь эти данные нужно как-то "забрать" в базу, чтобы в базе правильно шел складской учет. То есть мне как-то нужно будет сделать перенос введенных данных с листа Экселя обратно в базу, в этот конкретный заказ. В принципе, как получать данные из Экселя в Акс я знаю... Но в данном случае, мне кажется, необходимо этот "обратный перенос" организовать именно со стороны Экселя, скажем так, то есть, например, чтобы после добавления всех нужных товаров пользователь нажал кнопку в экселе - и данные перенеслись в базу... Потому что мне почему-то кажется, что хранить информацию о составе заказа именно в файле Экселя, и получать ее в базе путем запроса к файлу - это совсем не есть хорошо и будет нереально долго, когда, например, нужно будет увидеть какие-то общие цифры и т.д. Потому и вижу именно такой вариант.
В общем, очень хотелось бы услышать ваши советы и общие соображения специалистов по поводу нюансов и вообще как лучше это сделать. Хотя бы в общих словах, чтобы мне было за что зацепиться мыслью.

Или, может, мне лучше с этим вопросом сходить в экселевскую ветку форума?.. Правда, я там практически ни разу не был и никого не знаю, а тут у нас такой уже родной коллектив единомышленников)....
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2016, 17:35
Ответы с готовыми решениями:

По поводу взаимодействия Excel и Access
Вопрос такой: возможно ли, открыв Excel из Access, запустить макрос Excel из личной книги макросов??? Если можно, то как? Заранее...

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

Необходима консультация по поводу взаимодействия Excel и Access
Добрый день всем. В данной ветке форума я - новичок, больше "тусуюсь" в разделе по Access, т.к. базами данных увлекаюсь давно, а вот в...

24
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.03.2016, 19:47
В екселевском файле можно сделать форму, это несложно, а в ней скажем ListView с данными акса. Юзер будет выбирать из формы, выносить на лист, править, что-то брать из ексель-файла. Потом весь лист запросом скачать обратно в акс и по определенному алгоритму раскидать по таблицам. Мне кажется так будет проще чем выгружать таблицы акса на лист екселя. Тем более, что инфы много и на лесте будет трудно ее найти. В форме все-таки проще. Хотя это и не привычная форма акса, но все же идеи те же. У формы есть события, есть процедуры событий, практически тот же ВБА, хотя объекты другие.
2
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
02.03.2016, 20:34  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
В екселевском файле можно сделать форму, это несложно, а в ней скажем ListView с данными акса.
Спасибо за идею) Помнится, когда-то давным давно, лет десять назад, я даже делал в Экселе формы, это было еще до моего знакомства с Аксом... Прямо ностальгия) Даже уже не помню, как там это делается. Но мысль очень хорошая. То есть выходит, что эта форма будет брать данные из базы, не загружая их на лист? Это было бы вообще замечательно... Я сейчас тогда полезу почитаю про создание форм в Экселе, нужно освежить этот момент в памяти. А как хотя бы в общих чертах сделать так, чтобы форма брала данные из базы?..
То есть получается, я могу сделать форму с перечнем товаров, и юзер, например, отметит галочками, какие товары он добавляет в заказ - и эти отмеченные товары можно будет перенести из формы на лист, я правильно понимаю?
0
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
02.03.2016, 22:25
Попробуйте поюзать PowerQuery. Думаю, к вашей задаче очень даже актуально.
0
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
04.03.2016, 09:33  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
В екселевском файле можно сделать форму, это несложно, а в ней скажем ListView с данными акса. ...skip... Мне кажется так будет проще чем выгружать таблицы акса на лист екселя.
Я тут слепил что-то типа образца: базу с таблицей Товары и экселевский лист с кнопкой, вызывающей пользовательскую форму.

Правда, на форме сделал не ListView, а просто пару выпадающих списков для выбора товара.
Вы не могли бы, пожалуйста, на этом примере показать, как правильно "прицепить" данные из базы к выпадающим спискам на форме?..

Думаю, что остальное (как добавить выбранные данные на лист) я и сам сделаю, у меня основной вопрос именно в привязке данных, причем так, чтобы они не добавлялись сначала на лист экселя из акса, а брались оттуда напрямую.

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

Заранее большое спасибо)
Вложения
Тип файла: rar Связка.rar (75.3 Кб, 8 просмотров)
0
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
04.03.2016, 12:15  [ТС]
Вот я нашел у поля со списком на пользовательской форме (в экселевском файле) свойство RowSource, а как в него запихнуть связь с таблицей в базе Акса - не соображу... Как говорится, плохо быть по пояс деревянным)... Или я не в ту сторону думаю, и листбокс нужно как-то по-другому заполнять, программно?.. И если да, то, опять же, как правильно для этого установить связь с базой?..
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
04.03.2016, 13:21
Kkarn, в форуме по экселю и vba вам скорее ответят на все эти вопросы.
0
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
04.03.2016, 13:22  [ТС]
texnik-san, А я там тоже задал... И тишина) Не, все-таки наш Аксовский форум - мне как-то более родной и душевный)).
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,937
Записей в блоге: 4
04.03.2016, 13:24
хорошая компания подобралась
на другие прихожу --там какое запустение
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
04.03.2016, 13:26
А давайте решать вашу задачу все-таки прямо из аксес, а?

Делаете форму для ввода исходных данных заказа в аксесе. Автоматизацией открываете экселевский файл и в нужные ячейки записываете нужные значения. Запускаете экселевские макросы (они доступны, если описаны как паблик). Автоматизацией же считываете результат вычисления. Закрываете эксель.
0
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
04.03.2016, 13:36  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
хорошая компания подобралась
Именно))
Кстати, вас, милые дамы shanemac51 и texnik-san - с приближающимся праздником!

Добавлено через 3 минуты
Цитата Сообщение от texnik-san Посмотреть сообщение
А давайте решать вашу задачу все-таки прямо из аксес, а?
Да я уже думал над таким вариантом... Но пока что заказчик хотел бы, чтобы формирование заказа происходило в привычном ему файле экселя, там где рядом все расчеты и размеры, а то получается неудобно: сначала из базы, допустим, запустил на открытие файл экселя, просчитал все размеры и т.д., определился с количеством необходимых материалов - и, получается, вернулся в базу, в форму где нужно добавлять материалы?.. Как-то немного не то. Пожелание было - чтобы максимально оформление заказа происходило именно в экселе, а потом уже его состав и прочие данные подтягивались в акс...

Добавлено через 5 минут
По сути, у меня "затык" - именно на моменте подключения из экселя к таблице акса. В остальном я уже понаходил материалы, поначитался под завязку, пока вроде бы все понятно, как там дальше в экселе делать, но без подключения данных - не могу двинуться дальше.
В принципе, можно, конечно, сделать в файле подключение к данным на отдельном листе... И потом этот лист скрыть, и брать для выпадающих списков инфу уже с него. Хм. Надо подумать в эту сторону. Тем более, что фактически-то на листе не будет содержаться информация (что привело бы к ненужному "раздуванию" размеров файла экселевского), а только как бы ссылка на таблицу в базе...
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
04.03.2016, 13:44
Цитата Сообщение от Kkarn Посмотреть сообщение
у меня "затык" - именно на моменте подключения из экселя к таблице акса
Нет особенных проблем. Даже на стареньком DAO можно подключиться и создать рекордсет
Visual Basic
1
2
3
4
5
    Dim dao As Object, db As Object, rst As Object
    Set dao = CreateObject("DAO.DBEngine.120") 'Для XLS надо 36, для XLSX: 120 
    Set db = dao.OpenDatabase(ActiveWorkbook.path & "\Database.accdb")
    Set rst = db.openrecordset("select * from таблица")
    rst.movelast: rst.movefirst
1
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
04.03.2016, 17:29  [ТС]
mobile, спасибо! Я так понимаю, это код можно поставить на событие инициализации формы? Или самого списка? А потом присвоить рекордсет свойству rowsource списка?
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
04.03.2016, 17:32
Цитата Сообщение от Kkarn Посмотреть сообщение
присвоить рекордсет свойству rowsource
Я сильно сомневаюсь, что свойство rowsource имеет тип "рекордсет". Боюсь, оно текстовое.
1
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
04.03.2016, 19:24  [ТС]
Цитата Сообщение от texnik-san Посмотреть сообщение
Я сильно сомневаюсь, что свойство rowsource имеет тип "рекордсет". Боюсь, оно текстовое.
Кстати да, скорее всего... Про это я не подумал.
В принципе, имея рекордсет, можно организовать и заполнение поля из него...
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
04.03.2016, 20:01
. Не работает.
0
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
05.03.2016, 02:05
PowerQuery не подошёл? Microsoft ведь уже сделала инструмент для взаимодействия, можно пользоваться.
1
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
05.03.2016, 08:46
С интересом и удовольствием прочитала про Power Query (и покрылась пупырышками зависти и намерением таки перейти на 2010). Но в данном конкретном случае - не оно.
1
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
05.03.2016, 15:47
Предлагаю брать данные из Акса, запуская макрос в Эксе, помещать полученные данные скажем на Лист2, а на Листе1 в ячейках со списком их просматривать и выбирать. Только Экс я высылаю в .xlsm формате. Если данные в ячейках нужно просматривать в формате .xlsx,то данные придется брать из .xlsm формата.Это уже три файла. В макросе записан адрес файла Акса просто на диске d,туда его и поместить. А насчет получения в Аксе итогов работы-мб связанную таблицу сделать, в которой все Экс-данные будут отражаться.Да еще, в литературе хотя предлагаемый макрос описан, но для конкретного случая.По месту требует доработки. А файл Акса-здесь д.быть в формате .mdb
Вложения
Тип файла: rar ИзAccess_Jet.rar (21.6 Кб, 11 просмотров)
Тип файла: rar НаборЗаписей.rar (14.4 Кб, 11 просмотров)
1
 Аватар для Kkarn
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
06.03.2016, 13:06  [ТС]
corbis, Извиняюсь, я пока так и не прочитал про него. Надо будет посмотреть обязательно.
commun, Спасибо за то, что уделили внимание) Обязательно посмотрю Ваш вариант.
Так, глядишь, и соберу по кусочкам своего чудо-Франкеншейна))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2016, 13:06
Помогаю со студенческими работами здесь

Необходима консультация
нужна иллюстрация по каждому действию( т.е нужно пояснить , что сначала мы делим массив пополам , затем вывести массив уже в разделенном...

Необходима консультация
Доброго времени суток. Нужна помощь по заданию во вложении. Можно объяснить что это и с чем его едят?

Друзья! Необходима консультация
Здравствуйте, друзья!. Если эксперт женского пола - то с замечательным праздником 8 марта!! )) Вопрос - с пометкой срочно. ...

Необходима консультация (showmodal)
Дело вот в чем, создаю простую базу данных в делфи при помощи акцеса с (adoconnection, adotable, datasource, tdbgrid). Имеется 2 формы (1...

Необходима помощь в организации сети
Как должна выглядеть схема подключения: Wi-Fi(AP)->ПК->VPN->Интернет И вот ни ка не могу все это реализовать, подскажите как все это...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru