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

MS Excel <--> MS Access

22.05.2011, 15:34. Показов 8606. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Проблема такая-Есть база со списком команд и турниров.
Есть Excel`евский файл с результатами турниров для этих команд.
Необходимо:
а) Наладить импорт из Excel`евского файла в таблицу Турниры(Осуществляет связь "многие-ко-многим" для таблиц Команда и Турнир) с полями КодТур(ключевое),Турнир(связь с таблицей Турнир),Команда(связь с таблицей команда),Итог(количество набранных очков командой за турнир)
б) соотвествтенно экспорт результатов из MS Access для даты "позже,Чем...." в файл Excel`я

Импорт хотел сделать по нажатию кнопки и выбору файла(этот код уже прописал),но дальше не понимаю,как делать...в смысле кода

Буду очень благодарен за помощь)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2011, 15:34
Ответы с готовыми решениями:

Подстановка области из excel в форму Access и перенос в отчет Access
Всем привет. Хочу сделать базу данных по формирования и отправке писем. Короче: 1. Есть 5 клиентов 2. В конце каждого...

Обработать в цикле ячейки листа из Access и запустить макрос Excel-файла из Access
Access 2007, Excel 2007. Две задачи: обработать в цикле ячейки листа из Accessa и запустить макрос Excel-ного файла из Accessa. Первая...

Подключение к Microsoft Access из-под Excel (Data Access Objects или DAO)
Для того чтобы подключиться к Базе Access (из basic) в стате прочитал, что необходимо создать Форму в ней включить объект DATA, в далее в...

35
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 41
01.06.2011, 09:55  [ТС]
Студворк — интернет-сервис помощи студентам
В том то и дело,что нет) И при большом количестве команд каждый проставлять дату для каждой команды будет как минимум неудобно
0
 Аватар для Сергей1980
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
01.06.2011, 10:26
Цитата Сообщение от Vigor06 Посмотреть сообщение
В том то и дело,что нет) И при большом количестве команд каждый проставлять дату для каждой команды будет как минимум неудобно
Высылай образец экселевского файла- откуда надо брать данные. И говори имя таблицы ,куда это надо вставлять. Сделаю тебе как смогу скорей. А то тебя тут в дебри сейчас загонят и запутают))
0
95 / 74 / 3
Регистрация: 28.12.2009
Сообщений: 164
01.06.2011, 10:50
даты будут разные для каждой команды или одна дата на все?
0
 Аватар для Сергей1980
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
01.06.2011, 15:30
Вот кстати импорт в одну строку из экселя, если кому интересно)):
Visual Basic
1
2
Docmd.RunSQL "INSERT INTO ВАША_ТАБЛИЦА"& _ 
"SELECT * FROM [Excel 8.0;DATABASE=C:\Ваш путь\ВашЭксельИсточник.xlsx].[Лист$a1:e1000]"
Не надо никакой линковки, все автоматом...

Добавлено через 9 минут
А вот образец экспорта таблицы/запроса в файл эксель, пожалуй самый удачный вариант, можно вешать на кнопку:
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
Private Sub Экспорт_Click()
    
    Dim n% ' Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim xlApp As Object
    Dim xlWB As Object
    Dim Krit As Integer
    Dim sql_qry As String
 
    sql_qry = "ИМЯ ЗАПРОСА ИЛИ ТАБЛИЦЫ ОТКУДА БУДУТ ВСТАВЛЯТСЯ ДАННЫЕ"
    
   
    Set xlApp = CreateObject("Excel.Application")
    If Not (xlApp Is Nothing) Then
        On Error GoTo 8
    
      Set xlWB = xlApp.Workbooks.Open(CurrentProject.Path & "\ВашЭксельКудаЭкспорт.xlsx")  'Открытие книги эксель
 
        Set cn = CurrentProject.Connection
        Set rs = New ADODB.Recordset
        rs.Open sql_qry, cn, adOpenStatic, adLockReadOnly
     For n = 1 To rs.Fields.Count
            xlWB.Sheets(1).Cells(1, n) = rs(n - 1).Name
        Next
        xlWB.Sheets(1).Cells(2, 1).CopyFromRecordset rs
 
        xlApp.Visible = True
        Set xlApp = Nothing
        If Not rs.State = 1 Then rs.Close
        
    End If
 
    Set rs = Nothing
    Set cn = Nothing
    
End Sub

Вот как то так, вставит любые данные из таблицы/запроса в любой существующий файл эксель
2
95 / 74 / 3
Регистрация: 28.12.2009
Сообщений: 164
01.06.2011, 17:12
Цитата Сообщение от Сергей1980 Посмотреть сообщение
А вот образец экспорта таблицы/запроса в файл эксель, пожалуй самый удачный вариант, можно вешать на кнопку:
ИМХО, применительно к ТС это не самый удачный вариант, судя по знаниям ТС для него это будет сложно понять, и к тому же этот код требует дополнительного подключения библиотек
0
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 41
08.06.2011, 11:56  [ТС]
Нужно в таблицу турниры для каждой команды вставить данные из этого шаблона(см вложение).
А именно: Название команды,Итого,название турнира,дата проведения (все данные с листа "Бюрократия")
Вложения
Тип файла: rar Gorod_IT-Kubok.rar (16.1 Кб, 61 просмотров)
0
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 41
13.06.2011, 11:33  [ТС]
Самбади хелп ми!
0
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
13.06.2011, 11:43
Цитата Сообщение от Vigor06 Посмотреть сообщение
Самбади хелп ми!
Вам ответ дали еще 01.06.2011, 15:30.
0
2 / 3 / 0
Регистрация: 20.04.2011
Сообщений: 82
12.07.2011, 14:08
Цитата Сообщение от Сергей1980 Посмотреть сообщение
Вот кстати импорт в одну строку из экселя, если кому интересно)):
Visual Basic
1
2
Docmd.RunSQL "INSERT INTO ВАША_ТАБЛИЦА"& _ 
"SELECT * FROM [Excel 8.0;DATABASE=C:\Ваш путь\ВашЭксельИсточник.xlsx].[Лист$a1:e1000]"
Не надо никакой линковки, все автоматом...

Добавлено через 9 минут
А вот образец экспорта таблицы/запроса в файл эксель, пожалуй самый удачный вариант, можно вешать на кнопку:
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
Private Sub Экспорт_Click()
    
    Dim n% ' Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim xlApp As Object
    Dim xlWB As Object
    Dim Krit As Integer
    Dim sql_qry As String
 
    sql_qry = "ИМЯ ЗАПРОСА ИЛИ ТАБЛИЦЫ ОТКУДА БУДУТ ВСТАВЛЯТСЯ ДАННЫЕ"
    
   
    Set xlApp = CreateObject("Excel.Application")
    If Not (xlApp Is Nothing) Then
        On Error GoTo 8
    
      Set xlWB = xlApp.Workbooks.Open(CurrentProject.Path & "\ВашЭксельКудаЭкспорт.xlsx")  'Открытие книги эксель
 
        Set cn = CurrentProject.Connection
        Set rs = New ADODB.Recordset
        rs.Open sql_qry, cn, adOpenStatic, adLockReadOnly
     For n = 1 To rs.Fields.Count
            xlWB.Sheets(1).Cells(1, n) = rs(n - 1).Name
        Next
        xlWB.Sheets(1).Cells(2, 1).CopyFromRecordset rs
 
        xlApp.Visible = True
        Set xlApp = Nothing
        If Not rs.State = 1 Then rs.Close
        
    End If
 
    Set rs = Nothing
    Set cn = Nothing
    
End Sub

Вот как то так, вставит любые данные из таблицы/запроса в любой существующий файл эксель
можете объяснить 16-ю строку
0
 Аватар для Сергей1980
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 994
12.07.2011, 14:47
Цитата Сообщение от klimo Посмотреть сообщение
можете объяснить 16-ю строку
Можете ее удалить, это осталась несуществующая ссылка из первоначально раздербаненного кода.
Причем вместе с 15 строкой..
1
0 / 0 / 0
Регистрация: 08.06.2011
Сообщений: 11
12.07.2011, 20:09
Цитата Сообщение от Сергей1980 Посмотреть сообщение
Можете ее удалить, это осталась несуществующая ссылка из первоначально раздербаненного кода.
Причем вместе с 15 строкой..
Здравствуйте, Сергей.
Решил попробовать ваш код, вставил в свою кнопку, и вот:
PureBasic
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
Private Sub Кнопка39_Click()
    Dim n% ' Integer
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim xlApp As Object
    Dim xlWB As Object
    Dim Krit As Integer
    Dim sql_qry As String
 
    sql_qry = "test"
    
   
    Set xlApp = CreateObject("Excel.Application")
 
    
      Set xlWB = xlApp.Workbooks.Open(CurrentProject.Path & "\1.xls")  'Открытие книги эксель
 
        Set cn = CurrentProject.Connection
        Set rs = New ADODB.Recordset
        rs.Open sql_qry, cn, adOpenStatic, adLockReadOnly
     For n = 1 To rs.Fields.Count
            xlWB.Sheets(1).Cells(1, n) = rs(n - 1).Name
        Next
        xlWB.Sheets(1).Cells(2, 1).CopyFromRecordset rs
 
        xlApp.Visible = True
        Set xlApp = Nothing
        If Not rs.State = 1 Then rs.Close
        
 
 
    Set rs = Nothing
    Set cn = Nothing
 
End Sub
Обнаружил для себя,
1. что при отсутствии файла c:\1.xls вылетает ошибка, что не найден файл 1.xls - можно ли его создать программно заранее?
2. как правильно написать в sql_qry = "test" имя запроса типа "запрос на создание отчета"?
0
1181 / 632 / 39
Регистрация: 30.05.2010
Сообщений: 715
12.07.2011, 23:40
Здравствуйте lexo.

"..Обнаружил для себя.. ..при отсутствии файла c:\1.xls вылетает ошибка.."
действительно в коде нети проверки существования файла, и возможности его создания, и ...
и потому, в Вашем случае, вместо кода с применением ADO я рекомендую воспользоваться JET командой:
Visual Basic
1
DoCmd.OutputTo acOutputQuery, "test", acFormatXLS, CurrentProject.Path + "\1.xls", False
которая будет создавать или обновлять файл Excel и наполнять его лист test данными из запроса test.

И ещё вариант :
SQL
1
SELECT * INTO test IN 'C:\1.xls'[Excel 8.0;HDR=YES;IMEX=2] FROM test
подобной SQL конструкцией создаст в новом или существующем файле, лист test и наполнит его данными,
её недостаток - невозможность обновления.

"..как правильно написать...'запрос на создание отчета'" - существует правило которое во многих случаях помогает:
имена объектов в которых используются "пробелы" должны быть заключены в квадратные скобки
(я не использую в именах объектов пробелы и кириллические символы, и не испытываю затруднений )

успехов Вам.
Евгений.
1
0 / 0 / 0
Регистрация: 08.06.2011
Сообщений: 11
13.07.2011, 06:37
Цитата Сообщение от Teslenko_EA Посмотреть сообщение
Visual Basic
1
DoCmd.OutputTo acOutputQuery, "test", acFormatXLS, CurrentProject.Path + "\1.xls", False
которая будет создавать или обновлять файл Excel и наполнять его лист test данными из запроса test.
Спасибо, Евгений.
Получилось и быстро и коротко.
Но, есть одно но....
Книга EXCELL сохраняется в формате "MS EXCELL 5.0/95" и при количестве записей более 16 тыс часть записей будет пропадать, я так понимаю.
Как указать, что бы файл создавался и сохранялся в формате "MS EXCELL 97-2003 и 5.0/95", что бы можно было "задействовать" до 65 тыс. записей?

А может быть я ошибаюсь?
Попробовать такое к-во записей пока нет возможности.
0
2 / 3 / 0
Регистрация: 20.04.2011
Сообщений: 82
13.07.2011, 08:05
добрый день!а можно сделать так что бы при импорте в Excel таблица заполнялась не с первой строки ,а, допустим с 4?

Добавлено через 54 минуты
с предыдущи разобрался.и еще как сделать что бы столбцы формировалиси в строго определенной последовательности.в Access они в одном порядке, а когда импортирую порядок почему то меняется.
0
1181 / 632 / 39
Регистрация: 30.05.2010
Сообщений: 715
13.07.2011, 21:50
Здравствуйте lexo.
"..более 16 тыс часть записей будет пропадать.. ..может быть я ошибаюсь?." - да Вы ошибаетесь.
начиная с версии Excel 5 листы содержат 65536 строк.

Здравствуйте klimo.
"..что бы столбцы формировалиси в строго определенной последовательности.." - они обязательно будут в заданной последовательности, если её явно указать в источнике импорта/экспорта - запросе.
Подобная конструкция:
SQL
1
SELECT Поле1, Поле4, Поле3, Поле2 FROM Таблица1
отобразит поля именно в такой последовательности: Поле1 Поле4 Поле3 Поле2

Евгений.

P.S. klimo Ваш вопрос не является развитием темы в которую помещен,
он вполне достоин создания собственной темы.
1
0 / 0 / 0
Регистрация: 10.08.2012
Сообщений: 4
10.08.2012, 14:35
День добрый. Помогите пожалуйста.
Есть стандартная таблица с расчетами (Пример.xlsx). Хранится в она в папках под номерами соответствующими коду записи. Нужно из этих таблиц (Пример.xlsx) вынимать данные со второй вкладки "расчет" из массива (a1:m59)
Я представляю себе это так
Visual Basic
1
2
Papka = "C:\2012\" & Код & "_" & Поле58
DoCmd.RunSQL "INSERT INTO Tablica SELECT * FROM [Excel 8.0;DATABASE= Papka & "\Пример.xlsx].[расчет$a1:m59]"
Но как поправить код, чтобы так же это себе Access представлял?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2012, 14:35

Access - Excel, код не воспринимает количество строк в Excel более 65000
Добрый день! Есть БД (Access), есть файл Excel, где происходит обработка данных. Код ниже работает отлично, НО он не воспринимает...

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

Импорт данных из Excel в Access - MS Access
Добрый день, очень нужна помощь. Поля в таблице access: Name - текстовый Surname - текстовый Father name - текстовый Birth...

Обработка Excel и импорт из Excel в Access
Прошу совета профессионалов. С Excel-м ранее дел не имел. Задание: файлы Excel из одной папки отредактировать, и сохранить в другой. Из...

Excel -> Access -> Excel, импорт - экспорт
Добрый день! Есть табель учета рабочего времени в таблице Excel, задача - переместить данные со всех листов книги в DB Access, позже...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru