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

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

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

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

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


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


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

Такая логика бизнеса.
Да какой бы она не была надо ДОБАВЛЯТЬ в существующую таблицу,а не создавать новую(которых, одинаковой структуры, со временем станет целая тьма-и что Вы с ними будете делать) или как вариант: разрыв связей существующей,создание новой,восстановление связей и отсутствие гарантий от возникновения ошибок. Или Ваша БД состоит из одной таблицы?
...
Рейтинг: 0 / 0
24.07.2020, 14:26
    #39983656
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
в ёкселе на листе размещаете элемент управления формы кнопка и вешаете на неё:
Код: 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
24.07.2020, 15:50
    #39983717
Vasyl.Rudyk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
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
24.07.2020, 20:03
    #39983794
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
А так:
Путь к файлу определяйте в 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
25.07.2020, 13:00
    #39983901
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
в форме 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
25.07.2020, 14:32
    #39983908
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
Вдогонку:если в таблицу добавите поле со значением по умолчанию Date()/Now() в него запишется дата\время импорта
...
Рейтинг: 0 / 0
25.07.2020, 14:50
    #39983911
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт данных с Листа Excel в шаблон-таблицу Accss VBA
и еще: насчет количества полей я был не прав-их должно быть не меньше чем в импортируемой таблице
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / импорт данных с Листа Excel в шаблон-таблицу Accss VBA / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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