Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/60: Рейтинг темы: голосов - 60, средняя оценка - 4.93
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199

VBA в Access

12.04.2011, 15:33. Показов 13347. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, нужна помощь следующего плана...
На MS Access нужно сделать форму, одну единственную, чтобы из нее можно было делать следующее:
По нажатию на кнопку "Импорт" выбиралась папка, в которой находится множество excel-файлов. Access должен из каждого Лист1 каждого файла excel брал все ячейки столбца B, добавлял их в таблицу access в первый столбец, а во второй столбец(т.е. напротив каждой добавленной ячейки) добавлял имя файла excel, из которого эта ячейка была скопирована...
Я что-то мудрил, мудрил... Не могу понять как это сделать...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.04.2011, 15:33
Ответы с готовыми решениями:

Как заполнить базу данных Access с помощью vba в том же access и считать из нее инфу?
Прошу помочь в азах. Как заполнить базу данных Access с помощью vba в том же access и считать из нее инфу? Спасибо.

Можно ли в VBA скопировать в вставить запрос или таблицу из одного файла Access в другой файл Access
Вопрос такой можно ли скопировать и вставить запрос, таблицу или другой объект базы данных Access в другой файл Access средствами VBA?

Разница в скорости vba word и vba access
Вопрос: из акса идет выгрузка данных в файл ворд, далее эти данные опять же из акса форматно обрабатываются (данные заранее были тегированы...

68
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 16:42
Студворк — интернет-сервис помощи студентам
emlonlife,
выложил, в предыдущем посту.
1
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 18:00  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
emlonlife,
эта база данных у меня работает.
НАИОГРОМНЕЙШЕЕ СПАСИБО!!!
Низкий поклон!
Очень, очень, очень помогли!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 18:17
emlonlife,
после 23 строки в моём коде надо вот это ещё добавить (не думаю, что серьёзная ошибка):
Visual Basic
1
2
НаборЗаписей.Close
Set НаборЗаписей = Nothing
1
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
20.04.2011, 09:42  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
emlonlife,
после 23 строки в моём коде надо вот это ещё добавить (не думаю, что серьёзная ошибка):
Visual Basic
1
2
НаборЗаписей.Close
Set НаборЗаписей = Nothing
а за что этот код отвечает?
Вчера вечером был проведен первый тест БД... Было добавлено одним махом около 500 файлов, общим числом строк на 968000... Все супер Никаких ошибок
Огромное спасибо!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
20.04.2011, 10:25
Цитата Сообщение от emlonlife Посмотреть сообщение
а за что этот код отвечает?
в 15 строке устанавливается подключение к Таблица 1 (я так понимаю неявное подключение) и в объект НаборЗаписей помещается Таблица1. Если логически подумать, то после окончания работы соединение надо отключить, а НаборЗаписей по идее и сам удалится после завершения процедуры, т.к. объявлен внутри процедуры. Если файлы выбираются в диалоговом окне, то разрыв соединения с Таблица1 происходит в строке 62. А если файлы не выбираются, то происходит выход из кода, но я забыл добавить разрыв соединения с Таблица1.

Вот этот код:
Visual Basic
1
Set НаборЗаписей = Nothing
формальность в данном случае, т.к. НаборЗаписей объявлен внутри процедуры и сам удалится после завершения процедуры. Но лучше его всегда писать, чтобы потом не забыть сделать там, где это нужно.

Вообще в данном случае нужно использовать объект Command, а не RecordSet, чтобы изменения сразу вносить в Таблица1, но я им не умею пользоваться.
Используя Command, можно скорость выполнения кода увеличить.
1
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
20.04.2011, 12:34  [ТС]
Ок, все понял!
Еще раз огромное спасибо!
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
05.05.2011, 17:17
Что касается запроса в Access из Excel
Я давно небыл на форуме. Но у меня есть новый код, который решил прежние проблемы:
1. В Excel-е столбцы могут иметь имена с пробелами
2. Сокращена функция для извлечения имени
3. В книге Excel листы могут размещаться где угодно и иметь любые названия
Вложения
Тип файла: rar VBA в Access.rar (62.8 Кб, 33 просмотров)
1
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
10.05.2011, 10:53  [ТС]
Цитата Сообщение от Настаев Посмотреть сообщение
Что касается запроса в Access из Excel
Я давно небыл на форуме. Но у меня есть новый код, который решил прежние проблемы:
1. В Excel-е столбцы могут иметь имена с пробелами
2. Сокращена функция для извлечения имени
3. В книге Excel листы могут размещаться где угодно и иметь любые названия
Большое спасибо!
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
10.05.2011, 11:59
Что касается VBA (Access, Excel, Word) можешь спрашивать. Я отвечу. Правда, я редко бываю в Интернете
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
10.05.2011, 13:17  [ТС]
Цитата Сообщение от Настаев Посмотреть сообщение
Что касается VBA (Access, Excel, Word) можешь спрашивать. Я отвечу. Правда, я редко бываю в Интернете
Окей, спасибо
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
11.05.2011, 13:18  [ТС]
Цитата Сообщение от Настаев Посмотреть сообщение
Что касается VBA (Access, Excel, Word) можешь спрашивать. Я отвечу. Правда, я редко бываю в Интернете
Может тогда Вы сможете подсказать, или кто-то другой...
Если на машине, на которой создавалась база Access или книга Excel есть нужные библиотеки, а на другой, где эти база и книга должны использоваться, их нет, можно как-то запихнуть их в саму базу или книгу и при первом его открытии эта библиотека автоматически устанавливалась и регистрировалась?
Инсталяшку делать не вариант, установка ПО на машинах запрещена админом. Думал сделать архив самораспаковывающийся, в него библиотеку запихнуть и распаковывать прямо в систем32, там же книгу эксель и при ее открытии выполнить команду регистрации библиотеки. Но это на крайний случай... Может можно как-то по другому?
Еще вариант сделать скрытый лист(если эксель) и в него записывать имя пользователя в определенную ячейку. Если она пустая, то значит выполнитьь команду регистрации библиотеки, если этот пользователь открывал книгу, значит все ок. Но это тоже по-детски как-то...
Возможно это как-то упростить или вообще сделать идеально ?
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
13.05.2011, 02:03
Цитата Сообщение от emlonlife Посмотреть сообщение
Еще вариант сделать скрытый лист
Тогда придётся сохранять книгу после изменения в скрытом листе.
Для хранения таких данных лучше использовать реестр.

'сохранение данных в реестре
SaveSetting "MyApp", "МояПрограмма", "установлена", true

'доступ к данным реестра
GetSetting ("MyApp", "МояПрограмма", "установлена")

1
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
13.05.2011, 09:57  [ТС]
Цитата Сообщение от Настаев Посмотреть сообщение
Тогда придётся сохранять книгу после изменения в скрытом листе.
Для хранения таких данных лучше использовать реестр.

'сохранение данных в реестре
SaveSetting "MyApp", "МояПрограмма", "установлена", true

'доступ к данным реестра
GetSetting ("MyApp", "МояПрограмма", "установлена")

Я не понял
Что касается реестра - я вообще ноль...
Может поможете конкретный пример сделать? С библиотекой mscal.ocx?
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
13.05.2011, 18:17
Что касается библиотеки, может кто другой поможет. Я в этом не силён. Обычно стараюсь использовать существующие библиотеки.

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

Напишите SaveSetting в VBA и он сам подскажет, какие атрибуты туда вставлять
То же самое и с GetSetting.
1
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
23.05.2011, 14:42  [ТС]
Цитата Сообщение от Настаев Посмотреть сообщение
Что касается библиотеки, может кто другой поможет. Я в этом не силён. Обычно стараюсь использовать существующие библиотеки.

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

Напишите SaveSetting в VBA и он сам подскажет, какие атрибуты туда вставлять
То же самое и с GetSetting.
Спасибо!
А может еще подскажете...
Задача следующая:
Выполнить импорт ексель файла с одним столбцом, находищимся на лист1. Затем по этим данным нужно отобрать все строки в таблице БД, где есть эти данные и выполнить их экспорт в книгу эксель.
Т.е. имеется БД с большим набором строк. Выполняется импорт той самой книги эксель и сравниваются данные из него и первого столбца таблицы БД. Для всех, которые совпадают нужно выполнить экспорт со всеми данными из таблицы БД (всего 2 поля). Поможете?
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
23.05.2011, 17:30
Могу помочь, но придётся сделать несколько уточнений:

1. Как называется таблица в Access и столбец для импорта?
2. Как называется книга Excel и всегда ли данные находятся в одном и том же месте?
3. Какой тип импортируемых данных (текстовый или числовой)
4. Откуда должна запускаться команда на выполнение (из Excel или Access)?
5. Должен ли результат экспортироваться в новую книгу?
6. Есть ли время подождать?
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
23.05.2011, 17:50  [ТС]
Цитата Сообщение от Настаев Посмотреть сообщение
Могу помочь, но придётся сделать несколько уточнений:

1. Как называется таблица в Access и столбец для импорта?
2. Как называется книга Excel и всегда ли данные находятся в одном и том же месте?
3. Какой тип импортируемых данных (текстовый или числовой)
4. Откуда должна запускаться команда на выполнение (из Excel или Access)?
5. Должен ли результат экспортироваться в новую книгу?
6. Есть ли время подождать?
Я уже сам сделал
Остался только один вопрос
У меня есть форма и в ней подчиненная форма. Данные в подчиненной форме берутся из запроса.
Так вот, при загрузке формы автоматически выполняется запрос и из-за этого форма открывается долго. Затем есть кнопочка, по которой обновляется подчиненная форма, т.к. в текстовое поле уже ввели критерий(т.е. запрос берет именно значение поля1 и сравнивает в Таблице1).
Как сделать, чтобы запрос выполнялся только по кнопке, а не при открытии формы, чтобы при пустом поле1 он не выполнялся?
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
23.05.2011, 18:00
Может я не очень себе представляю структуру созданной Вами программы, но мне кажется, что будет правильным сделать следующее:

Запрос на получение данных должен создавать мёртвую (ни с чем не связанную) таблицу в Access. Эти данные должны залетать в подчинённую форму. Загрузка будет происходить быстро, поскольку данные уже есть. А в момент нажатия кнопки для обновленя данных, статическая таблица должна переписываться заново (полностью удаляться и создаваться заново). После этого можно обновить форму.
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
23.05.2011, 18:15  [ТС]
Цитата Сообщение от Настаев Посмотреть сообщение
Может я не очень себе представляю структуру созданной Вами программы, но мне кажется, что будет правильным сделать следующее:

Запрос на получение данных должен создавать мёртвую (ни с чем не связанную) таблицу в Access. Эти данные должны залетать в подчинённую форму. Загрузка будет происходить быстро, поскольку данные уже есть. А в момент нажатия кнопки для обновленя данных, статическая таблица должна переписываться заново (полностью удаляться и создаваться заново). После этого можно обновить форму.
Нет-нет, я уже сделал массовый экспорт..
Сейчас я про другой запрос. Когда нужно найти одну единственную запись, вводимую в текстовое поле.
Из-за нее не стоит создавать таблицу я думаю. Или я Вас не понял?
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
23.05.2011, 18:34
А почему бы просто не повешать на текстове поле событие при изменении приблизительно с таким текстом:
Code
1
DoCmd.SetFilter WhereCondition:="столбец=" & textbox1.text
То есть данные в подчинённой форме будут фильтроваться в зависимости от вводимого текста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2011, 18:34

Код VBA в Access 2010 работает, в Access 2007 выдает ошибку
Написала код VBA в Access 2010 - работает, в Access-2007 выдает ошибку. В чем причина - подскажите

Знаки подстановки разные в SQL Access и SQL VBA Access
Приветствую, уважаемые форумчане. Просмотрел множество сообщений о VBA и SQL, но вот так, как у меня вопрос нигде не стоял. Делаю...

VBA в Access
1)добавляет новую запись и заполняет её данными; 2)отыскивает нужную запись и изменяет данные в ней; 3)устанавливает фильтр и...

VBA в MS ACCESS
Дан упорядоченный по неубыванию массив A из N чисел и число X. Получить массив B, вставив X в A так, чтобы B был упорядочен по...

VBA в Access
Может быть данный вопрос покажется глупым, но почему у меня отсутствует функция "User Form"?


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru