Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
Здравствуйте, уважаемые форумчане!

Прошу помощи с настройкой импорта из книжки Екселя в табличку Акса

1. Какая именно библиотека за работу с экселькой ответит?

2. Как правильно попросить VBA открыть диалоговое окно для выбора файла?

3. Какую литературу курить чтобы понимать чем выцарапывать инфу из книжки? Книжка представляет собой таблицу с этапами работ по столбцам и объектами по строкам. Хочу в Аксе видеть таблицу - список объект-этап-значение.

Картинка с другого сайта.

+
ПС: я честно пытался искать это всё, но находил такие варианты, которые в половине случаев не работали у меня, а на другую половину не хватало интеллекта для расшифровки указаний, либо просто дичь была


и, на всякий случай, очень прошу не посылать меня на киберфорум, на корпоративке стоит его блокировка... ну только если там прям кландайк нужных знаний....

Спасибо!
13 фев 18, 00:16    [21186613]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
982183
Member

Откуда:
Сообщений: 1577
Это не задача "импорта".
Надо или сначала в EXEL привести данные в нужный вид, а потом импортировать.
Либо импортировать в данном виде, а потом ACCESSe сконвертировать
13 фев 18, 04:23    [21186673]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 3405
MokeevP
Какая именно библиотека за работу с экселькой ответит?

Так стало быть библиотека Excel отвечает. Только нужно ли? Может хватить и запросов.

MokeevP
Как правильно попросить VBA открыть диалоговое окно для выбора файла?

Есть несколько вариантов - свои классы на API или оффисный FileDialog

MokeevP
Какую литературу курить чтобы понимать чем выцарапывать инфу из книжки? Книжка представляет собой таблицу с этапами работ по столбцам и объектами по строкам. Хочу в Аксе видеть таблицу - список объект-этап-значение.
Для повышения образованности можешь почитать
Литвин П., Гетц К., Гунделой М., Разработка настольных приложений в Access 2002. Для профессионалов (+CD)


MokeevP
очень прошу не посылать меня на киберфорум, на корпоративке стоит его блокировка... ну только если там прям кландайк нужных знаний....
Ну да, ну да ... лица те же...
13 фев 18, 04:41    [21186676]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4128
MokeevP
Хочу в Аксе видеть таблицу - список объект-этап-значение

видимо удобнее получить столбиковый формат в екселе --код будет 20-30 строк
затем полученную табличку можно прилинковать к аксессу, чтобы уменьшить проблемы с актуальностью данных

---
п.с.
это разовая акция или основная таблица будет по-прежнему правиться в екселе
13 фев 18, 09:03    [21186812]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
982183
Это не задача "импорта".
Надо или сначала в EXEL привести данные в нужный вид, а потом импортировать.
Либо импортировать в данном виде, а потом ACCESSe сконвертировать


В Excel ничего не могу сделать, таблица не моя, бороться с авторами нет сил боле, а отдавать пользователю возможность (точнее необходимость) куда-то к чему-то приводить таблицу моветон наверно...
А вот второй вариант для меня загадочен:
1. Обстоятельство №1 - таблица источник очень грязная, там куча дурной ненужной информации
2. Обстоятельство №2 - больше половины информации будет импортирована (ну то есть по той схеме что я изобразил в топике) с перевычислениями хотя наверно это не имеет значения
3. Я так понимаю что нужно сделать таблицу - помойку для первичного переноса и потом из неё экспортировать в крисивишный перечень?
4. Экспорт, соответственно, через запросы?


Панург
MokeevP
Какая именно библиотека за работу с экселькой ответит?

Так стало быть библиотека Excel отвечает. Только нужно ли? Может хватить и запросов.

Ну да, верно :D после поверхностного изучения filedialog стало ясно что дело было не в бобине...

Панург
MokeevP
Как правильно попросить VBA открыть диалоговое окно для выбора файла?

Есть несколько вариантов - свои классы на API или оффисный FileDialog

Почти понял, пошёл курить эту тему с filedialog

Панург
MokeevP
Какую литературу курить чтобы понимать чем выцарапывать инфу из книжки? Книжка представляет собой таблицу с этапами работ по столбцам и объектами по строкам. Хочу в Аксе видеть таблицу - список объект-этап-значение.
Для повышения образованности можешь почитать
Литвин П., Гетц К., Гунделой М., Разработка настольных приложений в Access 2002. Для профессионалов (+CD)

Буду искать, отдельное спасибо!


Панург
MokeevP
очень прошу не посылать меня на киберфорум, на корпоративке стоит его блокировка... ну только если там прям кландайк нужных знаний....
Ну да, ну да ... лица те же...
[/quot]
ась? что?
13 фев 18, 09:14    [21186833]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
ПЕНСИОНЕРКА
MokeevP
Хочу в Аксе видеть таблицу - список объект-этап-значение

видимо удобнее получить столбиковый формат в екселе --код будет 20-30 строк
затем полученную табличку можно прилинковать к аксессу, чтобы уменьшить проблемы с актуальностью данных

---
п.с.
это разовая акция или основная таблица будет по-прежнему правиться в екселе


Понимаю, что это может прозвучать абсурдно, но нет, вариант прилинкованной таблицы совершенно не устраивает, так как нужна фиксация каким файлом (после обновления данных таблицу переименовывают) были добавлены или удалены значения. У меня вообще к той таблице доступ read only по жизни. Это акция постоянная регулярная и нужно чтобы юзер только кнопки да/нет нажимал и иногда что-то вводил, но это уже другая тема для вопроса.
13 фев 18, 09:21    [21186844]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4128
MokeevP
вариант прилинкованной таблицы совершенно не устраивает,

тогда многое зависит от того
--сколько полезных столбцов в ексельке(более 255 или менее)
--есть ли в ексельке уникальный столбик для однозначной привязки новых записей к записям, которые уже введены в аксесс
--есть ли еще полезная информация в ексельке кроме объект/этап(может там на позицию 10-15 столбиков, скрытых под группировку --ведь в екселе может быть и 16000 столбцов)
13 фев 18, 12:12    [21187362]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
982183
Member

Откуда:
Сообщений: 1577
Это разовая работа или надо делать постоянно?
Если разовая, то думаю нетрудно произвести первичную обработку до нужного вида.
Если постоянная/периодическая, то с учетом "грязи" сложно что-то посоветовать.
В ACCESSe есть встроенный функционал связи с EXEL
13 фев 18, 13:08    [21187573]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MrShin
Member

Откуда:
Сообщений: 1004
MokeevP
бороться с авторами нет сил боле

А в чем заключается проблема с борьбой? Обычно в таких случаях делается нормальный шаблон на Экселе со всеми ограничениями и проверками, в который грязь просто не занесешь. Делает этот шаблон, естественно, не пользователь, а компетентный человек.
Нет возможности сделать им нормальный шаблон?
13 фев 18, 13:23    [21187643]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
bubucha
Member

Откуда:
Сообщений: 5296
автор
таблица источник очень грязная, там куча дурной ненужной информации

Если нет четкого алгоритма отфильтровывания грязи и выколупывания нужной информации из книги, то можно расходиться :)
Если можно написать макрос в экселе по "причесыванию" данных (не обязательно насиловать файл источник, можно создавать копию, или копировать данные в новую книгу) , то можно думать дальше...например поднятие апликации экселя из акеса и пиление ячеек через vba, либо экспорт таблы в акес и пиление через vba+sql...
13 фев 18, 16:38    [21188551]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
ПЕНСИОНЕРКА
MokeevP
вариант прилинкованной таблицы совершенно не устраивает,

тогда многое зависит от того
--сколько полезных столбцов в ексельке(более 255 или менее)

столбцов порядка 10

ПЕНСИОНЕРКА
--есть ли в ексельке уникальный столбик для однозначной привязки новых записей к записям, которые уже введены в аксесс

Нет, именно такого нет (я осознаю всю его важность). Технология переброски и обновления записей будет основываться на связке /объект-дата/:
1. добавляется такая строка при первичном импорте.
2. при вторичном импорте данные из этой строки будут искаться в таблице-исходнике после обновления. если есть совпадение - ок, идём дальше. Нет совпадения - делаю небольшой репорт по этой лаже, помечаю эту строку как удалённая и идём дальше.
3. Аналогично сравниваю в обратном порядке и добавляю недостающие позиции в БД

пока что это единственный выход, который я придумал, потому что авторы таблицы совершенно не следят за её структурой и их совсем не волнует учёт данных (патамучта им это и не надо)

ПЕНСИОНЕРКА
--есть ли еще полезная информация в ексельке кроме объект/этап(может там на позицию 10-15 столбиков, скрытых под группировку --ведь в екселе может быть и 16000 столбцов)

Собственно вся полезная информация именно к этому и сводится, просто этап, в данном случае, это дата. Мне же от этой даты нужно записать строку отскочив на несколько дней назад и ещё одну строку отскочив ещё больше назад. (предметно - дата отчёта в исходнике, нужна дата начала работ и дата предоставления на проверку)
13 фев 18, 21:23    [21189166]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
982183
Это разовая работа или надо делать постоянно?
Если разовая, то думаю нетрудно произвести первичную обработку до нужного вида.
Если постоянная/периодическая, то с учетом "грязи" сложно что-то посоветовать.
В ACCESSe есть встроенный функционал связи с EXEL

Это регулярная работа примерно раз в месяц.

bubucha
например поднятие апликации экселя из акеса и пиление ячеек через vba, либо экспорт таблы в акес и пиление через vba+sql...

Именно это я и предполагаю :)
У меня сейчас как бе дилетантская задача, я никак не осознаю как в вба подгрузить файл экселя и начать его колупать, ищу мануал на эту тему, но видимо поисковый талант мой зачах...
13 фев 18, 21:30    [21189173]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4128
MokeevP
столбцов порядка 10

т.е. дата+объект+10этапов
или объект+10 этапов+(дата на пересечении)
какая-то куцая таблица или же куцее описание задачи
---
задачу нельзя нормально решить, если не понимаешь ее сути и назначение
чрезмерное упрощение примера --не всегда есть ХОРОШО
13 фев 18, 21:47    [21189199]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
ПЕНСИОНЕРКА
MokeevP
столбцов порядка 10

т.е. дата+объект+10этапов
или объект+10 этапов+(дата на пересечении)
какая-то куцая таблица или же куцее описание задачи
---
задачу нельзя нормально решить, если не понимаешь ее сути и назначение
чрезмерное упрощение примера --не всегда есть ХОРОШО


В таблице исходнике есть столбец с {объектом #1}, {датой отчёта#1}, {датой отчёта#2}, {датой отчёта#3}, {тд...} и ещё куча всякого хлама систематически встречающегося между этими столбцами

мне нужно из одной строки этой таблицы получить несколько строк примерно такого вида
{объектом #1}{дата отчёта#1 - 20дн}{параметр}{параметр}
{объектом #1}{дата отчёта#1 - 5 дн}{параметр}{параметр}
{объектом #1}{дата отчёта#2 - 20дн}{параметр}{параметр}
{объектом #1}{дата отчёта#2 - 5 дн}{параметр}{параметр}
{объектом #1}{дата отчёта#3 - 20дн}{параметр}{параметр}
{объектом #1}{дата отчёта#3 - 5 дн}{параметр}{параметр}
13 фев 18, 22:00    [21189224]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 141
MokeevP, ну Вы прям мне в тему - щас ваяю импорт из Ёкселя в акс. идея понравилась у этих парней (хотя конечно неказисто кажется но это не так!) -посмотрите что и как они сделали - мож ближе станете к пониманию задачи.
+
это видео. код никто не даст конечно :)
http://bitforce.ru/ip-video.html


обязательно почитайте умную книжку (которую посоветовали выше-щитай библия вбашника (хватит и 1-го тома с головой=почти 1000 стр.) - разница в скорости программирования как минимум на 2 порядка изменится.
+

накидал -вытащил из проекта пару тройку функций- они вроде даже стыкуются разбирайтесь-не редактировал, так что там кое что непонятно как бы,
Public Function openfilepath(dt As MsoFileDialogType, titles$, Pathname$, Mult As Boolean, Res%) As String
With Application.FileDialog(dt)
   .Title = titles '"Выберите файл"
   .InitialFileName = Pathname ' путь
   If dt = 1 Then
   .AllowMultiSelect = Mult
   .Filters.Clear
    .Filters.Add "MS Excel", "*.xls,*.xlsx", 1
    End If
    Res = .Show
    If Res = 0 Then Exit Function
End With
' берем только один прайс!
openfilepath = Trim(Application.FileDialog(1).SelectedItems.Item(1))
End Function

Private Sub ProvFunction(IndeksorName As Variant)
' функция загрузки второго листа эксель
' откроем файл Эксель
Dim PathOfName$, Myresult%, Prov
Myresult = 1
PathOfName = openfilepath(msoFileDialogOpen, "Выберите дополнительный файл", myObject.Pathes, False, Myresult)
If Myresult = 0 Then MsgBox "Файл не выбран!": Exit Sub
Set objExel = New Excel.Application
Set objbook = objExel.Workbooks.Open(PathOfName)
If IsNumeric(IndeksorName) Then Prov = CLng(IndeksorName) Else Prov = CStr(IndeksorName)
Set ListExcel2 = objbook.Worksheets(Prov)
' открыли наш лист экселя - теперь будем искать в нем данные


End Sub


Private Function pfcPoiskAnotherfile(str$, ByVal StolbPoisk&, ByVal StolbResult&, Listname As Excel.Worksheet) As String
' str-это данные которые мы будем искать в другом файле
' StolbPoisk-столбец в котором будем искать по образцу str$
 ' StolbResult  столбец из которого вытащим результат
' Myvalue-собственно результат
' Listname-лист в файле в котором ищем то что нам надо
Dim listrow As Range, myvalue$

  Set listrow = Listname.Columns(StolbPoisk).Find(str, , xlValues, xlWhole, xlByColumns, xlNext)
If listrow.row > 0 Then myvalue = Listname.Cells(listrow.row, StolbResult) Else myvalue = vbNullString
pfcPoiskAnotherfile = myvalue
End Function

это просто пример!
13 фев 18, 22:29    [21189258]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
__Michelle
Member

Откуда:
Сообщений: 2854
alecko 
разница в скорости программирования как минимум на 2 порядка изменится.
То есть, минимум в 100 раз?
13 фев 18, 22:45    [21189279]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
__Michelle
alecko 
разница в скорости программирования как минимум на 2 порядка изменится.
То есть, минимум в 100 раз?

турбореактивный кодер :D

alecko
MokeevP, ну Вы прям мне в тему - щас ваяю импорт из Ёкселя в акс. идея понравилась у этих парней (хотя конечно неказисто кажется но это не так!) -посмотрите что и как они сделали - мож ближе станете к пониманию задачи.

Вот тут я немножко не понял куда там смотреть, куча видео, всё изучить?) а код сейчас попробую осознать, спасибо!
13 фев 18, 23:02    [21189313]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 141
MokeevP,
да прям первое со 2-й минуты можно - сложная структура файла, форматирование и пр.
13 фев 18, 23:25    [21189338]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
alecko
MokeevP,
да прям первое со 2-й минуты можно - сложная структура файла, форматирование и пр.

Ну, это круто и классно, примерно что-то такое и надо, только как?)

На самом деле я просто упёрся в то что не могу подружиться с Application.FileDialog :(
14 фев 18, 00:29    [21189458]     Ответить | Цитировать Сообщить модератору
 Re: Импорт из Excel в Access  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 33
MokeevP
На самом деле я просто упёрся в то что не могу подружиться с Application.FileDialog :(


А, не, понял всё (ну или до уровня понимания как он работает чтобы у меня работало)
14 фев 18, 00:53    [21189501]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить