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

VBA в Access

12.04.2011, 15:33. Показов 13417. Ответов 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
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
15.04.2011, 13:29  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Busine2009 Посмотреть сообщение
emlonlife,
а в этой теме есть уже этот запрос: просто не хочется всю тему перечитывать. Если есть, то укажите номер беседы.
Ещё лучше выложите код запроса.
В сообщении №13 архив с БД, сделанной пользователем Настаев. Мне нужно добавить запрос, который определяет какие листы есть в выбранных книгах и в зависимости от имени листа запустить тот или иной макрос. Допустим, если в первом файле есть лист1 то запускается макрос1, если есть лист2 то макрос 2. И так для каждого файла.
Т.е. мне нужен только код запроса, которые мог бы определить имена листов в книге.
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
18.04.2011, 23:35  [ТС]
Дорогие форумчане, простите за наглость, но попрошу еще раз, т.к. это очень нужно!
помогите к БД из сообщения №13 добавить функцию на проверку имени листа и в зависимости от него выполнять импорт_2 или импорт_3.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 08:18
emlonlife,
я бы попробовал сделать, но тогда мне надо будет кардинально весь код менять, потому что в том, коде, что есть, используется супер-пупер запрос, с которым я не разберусь.
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 09:54  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
emlonlife,
я бы попробовал сделать, но тогда мне надо будет кардинально весь код менять, потому что в том, коде, что есть, используется супер-пупер запрос, с которым я не разберусь.
Был бы Вам премного благодарен!
А сколько это займет времени?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 09:56
Цитата Сообщение от emlonlife Посмотреть сообщение
А сколько это займет времени?
не знаю, может быть я вообще не смогу сделать.
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 10:38  [ТС]
не знаю, может быть я вообще не смогу сделать.
А Вы постараетесь?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 10:38
Цитата Сообщение от emlonlife Посмотреть сообщение
А Вы постараетесь?
сейчас гляну. Просто я сейчас др. смотрел.
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 10:45  [ТС]
сейчас гляну. Просто я сейчас др. смотрел.
Ок, с нетерпением жду
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 11:15
Цитата Сообщение от emlonlife Посмотреть сообщение
выбираю файл Excel
т.е. теперь нужно обрабатывать не все файлы Excel в определённой папке, а только один выбранный? Или автоматически открывать файлы, выводить диалоговое окно с определённой информацией и после нажатия кнопки на этой форме выполнять определённое действие?
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 11:20  [ТС]
т.е. теперь нужно обрабатывать не все файлы Excel в определённой папке, а только один выбранный?
нет-нет, я не правильно выразился... выбираю я целый список файлов!
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 11:23
emlonlife,
т.е. файлы автоматически открываются и появляется диалоговое окно с определённой информацией и после нажатия кнопки в этом диалоговом окне выполняются определённые действия?
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 11:43  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
emlonlife,
т.е. файлы автоматически открываются и появляется диалоговое окно с определённой информацией и после нажатия кнопки в этом диалоговом окне выполняются определённые действия?
Не совсем, открывается диалоговое окно, я выбираю нужные файлы (если проще, чтобы выбирались все файлы в папке, то можно и так, но лучше, чтобы я сам выбирал нужные) и access смотрел какие есть листы в этих файлах. Обычно есть "База" и "Лист1", но редко бывают еще другие. В принципе, можно использовать только База и Лист1, но если возможно то и для других имен листов. Для каждого выбранного файла акцес смотрит имена листов и копирует данные в свою таблицу из Столбца Лист1 или База и напротив каждой скопированной ячейки добавляет имя файла, из которого она скопирована.
Если есть Лист1 то копирует из Лист1, если есть База, то копирует из База
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 11:51
emlonlife,
т.е. данные нужно брать только с двух листов:
Лист1
и если есть лист База, то с Лист1 данные не брать, а брать данные с листа База?

Допустим запускаем код, который определяет, что в выбранных папках, помимо двух этих листов, ещё какой-то лист. Что тогда?
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 12:09  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
т.е. данные нужно брать только с двух листов:
Лист1
и если есть лист База, то с Лист1 данные не брать, а брать данные с листа База?
Допустим запускаем код, который определяет, что в выбранных папках, помимо двух этих листов, ещё какой-то лист. Что тогда?
Если есть лист База, то берем только из нее, если есть листы и База и Лист1, то опять же из База. Если листа База нет, а есть Лист1, то берем из Лист1.
Если нет ни одного из этих листов, то берем данные из первого имеющегося листа.
И лучше давайте сделаем так, чтобы не брать столбец с определенным именем в листах Excel, а берем всегда только второй столбец, т.е. столбец B.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 12:10
emlonlife,
а ключевое поле почему не используйте в Таблице Access (это обычно Счётчик)? Его вроде надо всегда использовать - нужно оно или нет.
0
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 12:17  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
emlonlife,
а ключевое поле почему не используйте в Таблице Access (это обычно Счётчик)? Его вроде надо всегда использовать - нужно оно или нет.
Счетчик в таллице Access используется, просто он не выводится при открытии таблицы, а в режиме конструктора он есть. Да, он нужен конечно
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 14:01
Основано на ADO.
  1. Tools - References... - Microsoft ActiveX Data Objects 2.1 Library
  2. Tools - References... - Microsoft Excel Object Library
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Sub P1()
Dim НаборЗаписей As New ADODB.Recordset
Dim Эксель As New Excel.Application
Dim Книга As Excel.Workbook, Лист As Excel.Worksheet
Dim Флаг As Boolean
Dim LastRow As Long
Dim i As Long
Dim Файл As Variant
'Перед запуском кода, надо чтобы таблица была закрыта.
'Способ закрытия (с сохранение или без) укажите сами (например,acSaveNo).
'Способы закрытия выскакивают, когда нажимаешь запятую.
DoCmd.Close acTable, "Таблица1", acSaveNo
'Помещаем во что-то там таблицу из Access и именно где-то там и будем работать
'с этой таблицей. По окончании работы что-то там поместим в таблицу Access.
НаборЗаписей.Open Source:="Таблица1", ActiveConnection:=CurrentProject.Connection, _
    CursorType:=adOpenKeyset, LockType:=adLockOptimistic
'Выбор файлов Excel для импорта в Access.
With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .ButtonName = "OK"
    .Filters.Add Description:="Microsoft Excel", Extensions:="*.xls;*.xlsx"
    .Title = "Выберите файлы Excel для импорта в Access"
    If .Show = 0 Then
        Exit Sub
    End If
    'Здесь обрабатываются все выбранные файлы.
    For Each Файл In .SelectedItems
        Set Книга = Эксель.Workbooks.Open(FileName:=Файл)
        For Each Лист In Книга.Worksheets
            If Лист.Name = "База" Then
                Set Лист = Лист
                Флаг = True
                Exit For
            End If
        Next Лист
        If Флаг = False Then
            For Each Лист In Книга.Worksheets
                If Лист.Name = "Лист1" Then
                    Set Лист = Лист
                    Флаг = True
                    Exit For
                End If
            Next Лист
        End If
        If Флаг = False Then
            Set Лист = Книга.Worksheets(1)
        End If
        LastRow = Лист.Cells(Лист.Rows.Count, 2).End(xlUp).Row
        For i = 1 To LastRow
            With НаборЗаписей
                .AddNew
                .Fields(0).Value = Лист.Cells(i, 2)
                .Fields(1).Value = Книга.Name
                .Update
            End With
        Next i
        Книга.Close SaveChanges:=False
        Флаг = False
    Next Файл
End With
Эксель.Quit
НаборЗаписей.Close
Set НаборЗаписей = Nothing
Set Эксель = Nothing
Set Книга = Nothing
Set Лист = Nothing
MsgBox "Готово", vbInformation
End Sub
1
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 16:32  [ТС]
Основано на ADO.
  1. Tools - References... - Microsoft ActiveX Data Objects 2.1 Library
  2. Tools - References... - Microsoft Excel Object Library
Огромнейшее спасибо!!!
Только есть одна проблема(((
Не запускается, библиотеки указанные я подключил. При нажатии на кнопку выдает "Ошибочная конструкция SQL; предпологалось 'DELETE', 'INSET', 'PROCEDURE', 'SELECT' или 'UPDATE'."
Может нужно еще какие-либо библиотеки подключить?
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
19.04.2011, 16:35
emlonlife,
эта база данных у меня работает.
Вложения
Тип файла: rar db1.rar (18.2 Кб, 29 просмотров)
1
11 / 11 / 0
Регистрация: 23.03.2011
Сообщений: 199
19.04.2011, 16:41  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
emlonlife,
сейчас я выложу базу данных, которая у меня работает.
Жду с нетерпением
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2011, 16:41

Код 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"?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru