powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / импорт данных с Листа Excel в шаблон-таблицу Accss VBA
15 сообщений из 15, страница 1 из 1
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983483
Vasyl.Rudyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрий день.
Подскажиет пожалуйста как решить следующую задачу.
Если будет пример, буду очень благодарен.

1. Есть БД Access в ней есть таблица Users с набором полей.
2. Есть папка в которой лежат таблицы Excel и которые совпадают с полями таблицы Access.

Необходимо написать скрипт который по нажатию кнопки в форме Access:
1. Предложит окно выбора файла Excel.
2. После выбора файла Excel, импортирует даные с листа Excel в шаблон-таблицы Access.

или ссылка на материалы которые помогут решить данную задачу.

Спасибо.
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983489
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так а вы включите в акцессовском vba-редакторе макрорекордер, и проделайте один раз операцию ручного импорта данных из экселя (стандартным визардом). Скрипт сам и напишется.
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983499
Vasyl.Rudyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ldfanate
так а вы включите в акцессовском vba-редакторе макрорекордер, и проделайте один раз операцию ручного импорта данных из экселя (стандартным визардом). Скрипт сам и напишется.


А в Аксес есть макрорекордер?
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983515
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983516
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ведь данные можно просто добавить в существующую...Со всеми её связями и сохранив всю логику работы БД.И вообще:а зачем нужен "посредник" в виде EXCEL.Почему данные не вносить в ACCESS?
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983529
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasyl.Rudyk
Необходимо написать скрипт который по нажатию кнопки в форме Access:
Сколько?
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983556
Vasyl.Rudyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
А ведь данные можно просто добавить в существующую...Со всеми её связями и сохранив всю логику работы БД.И вообще:а зачем нужен "посредник" в виде EXCEL.Почему данные не вносить в ACCESS?


Такая логика бизнеса.
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983585
Vasyl.RudykДНеобходимо написать скрипт который по нажатию кнопки в форме Access:
1. Предложит окно выбора файла Excel. В аксе есть встроенный объект Application.FileDialog, но я предпочитаю это 12188508
Vasyl.Rudyk2. После выбора файла Excel, импортирует даные с листа Excel в шаблон-таблицы Access. DoCmd.TransferSpreadsheet
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983614
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasyl.Rudyk

Такая логика бизнеса.
Да какой бы она не была надо ДОБАВЛЯТЬ в существующую таблицу,а не создавать новую(которых, одинаковой структуры, со временем станет целая тьма-и что Вы с ними будете делать) или как вариант: разрыв связей существующей,создание новой,восстановление связей и отсутствие гарантий от возникновения ошибок. Или Ваша БД состоит из одной таблицы?
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983656
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ёкселе на листе размещаете элемент управления формы кнопка и вешаете на неё:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub fromExcelToAccess()
    Dim dbe As Object 'DAO.DBEngine
    Dim db  As Object 'DAO.Database
    Dim rst As Object 'DAO.Recordset
    Dim i As Long
    Set dbe = CreateObject("DAO.DBEngine.120")
    Set db = dbe.OpenDatabase("D:\MyDoc\Access\tmp.mdb")
    Set rst = db.TableDefs("Таблица1").OpenRecordset
            For i = 1 To Range("A" & Cells.Rows.Count).End(xlUp).Row - 1
            rst.AddNew
            rst("Поле1") = Range("a" & 1 + i).Value 'или rst(0)...rst(N)
            rst("Поле2") = Range("b" & 1 + i).Value
            rst("Поле3") = Range("c" & 1 + i).Value
           'rst("поле4") = Date()
        rst.Update
    Next
  End Sub

Можно и на ADO, но DAO мне "роднее"
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983717
Vasyl.Rudyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
в ёкселе на листе размещаете элемент управления формы кнопка и вешаете на неё:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub fromExcelToAccess()
    Dim dbe As Object 'DAO.DBEngine
    Dim db  As Object 'DAO.Database
    Dim rst As Object 'DAO.Recordset
    Dim i As Long
    Set dbe = CreateObject("DAO.DBEngine.120")
    Set db = dbe.OpenDatabase("D:\MyDoc\Access\tmp.mdb")
    Set rst = db.TableDefs("Таблица1").OpenRecordset
            For i = 1 To Range("A" & Cells.Rows.Count).End(xlUp).Row - 1
            rst.AddNew
            rst("Поле1") = Range("a" & 1 + i).Value 'или rst(0)...rst(N)
            rst("Поле2") = Range("b" & 1 + i).Value
            rst("Поле3") = Range("c" & 1 + i).Value
           'rst("поле4") = Date()
        rst.Update
    Next
  End Sub


Большое спасибо, очень полезное решение.
Но сама суть задачи что бы именно Аксесом выбрать файл Екселя, не открывая книгу, забрать данные с листа и записать в таблицу Аскеса.

Можно и на ADO, но DAO мне "роднее"
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983794
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так:
Путь к файлу определяйте в FileDialog и далее
Код: vbnet
1.
2.
s = "INSERT INTO таблица SELECT * FROM [Excel 8.0;HDR=yes;DATABASE=D:\help\forum\excelToAccess.xls].[Лист1$A1:D100];"
CurrentDb.Execute s

Количество и именаполей должны быть одинаковы.Последняя строка диапазона заведомо больше макс возможного фактического количества строк в тбл.- [Лист1$A1: D100 ]
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983901
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в форме ACCESSа:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub  cmb_Click()
Dim dlgOpen, p, s
Set dlgOpen = Application.FileDialog(1)
'With dlgOpen   'в блоке задаются параметры и вид FileDialog 
'    .AllowMultiSelect = False ' "умолчательное" свойство
'   .......
'End With
  If dlgOpen.Show = -1 Then
       p = dlgOpen.SelectedItems.Item(1)
  End If
s = "INSERT INTO таблица1 SELECT * FROM [Excel 8.0;HDR=yes;DATABASE=" & p & "].[лист1$A1:D100];"
CurrentDb.Execute s
End Sub
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983908
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку:если в таблицу добавите поле со значением по умолчанию Date()/Now() в него запишется дата\время импорта
...
Рейтинг: 0 / 0
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
    #39983911
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще: насчет количества полей я был не прав-их должно быть не меньше чем в импортируемой таблице
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / импорт данных с Листа Excel в шаблон-таблицу Accss VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]