singlepost

Выгрузка информации из Excel файлов в БД Access? << На главную или назад  

Уважаемые граждане, кто может натолкнуть на мысль и подкинуть идею, как это реализовать.
Опишу в кратце суть проблемы:есть информация в виде строк и столбцов в Excel (таких файлов несколько от 3 до 6), ее нужно выгружать (выборочно не всю) в форму БД Access. На данный момент все делается вручную, хочу автоматизировать. Не прошу сделать это за меня, а прошу навести на путь истинный, каким образом принято это делать. всем спасибо откликнувшимся!

Хорошо знаком с веб-технологиями, но боюсь здесь понадобиться C++. Я его понимаю но знаю слабо, однако разобраться смогу если что.

43 ответов в теме “Выгрузка информации из Excel файлов в БД Access?”

  1. 12
    Борис Тепляков ответил:

    normal.dot- это в Worde, в Access создаешь форму (можно использовать Мастер, чтобы не забивать голову). добавляешь кнопку и к кнопке (свойство-> действие-> нажатие кнопки) привязываешь код на VBA, или макрос, или запуск запроса. далее форму после отладки сохраняешь.

  2. 11
    Леонид Максимов ответил:

    можно попробовать использовать ADO или DAO. и Access, и Excel это умеют. использовать можно из любого языка.

  3. 10
    Алексей Вишняков ответил:

    Ты можешь сохранить макрос в normal.dot и тогда он будет виден для всех документов.

    > на VBA написть такую тему чтоб копировала значение из одной ячейки таблички и вставляла ее в другую

    В офисе есть одна полезная вещь: Ты можешь записать свои действия в виде макроса, а потом разбирать что там и откуда. Для этого в меню макросы тебе нужно выбрать пункт "Записать макрос".

    PS только что сам попробовал решить твою задачу с копированием. Вот результат:

    Sub Ìàêðîñ1()
    '
    ' Ìàêðîñ1 Ìàêðîñ
    ' Ìàêðîñ çàïèñàí 27.04.2008 (Alex)
    '

    '
    Selection.Copy
    Range("B1").Select
    ActiveSheet.Paste
    End Sub

  4. 9
    Иван Игнатов ответил:

    Именно таким решением и занимаюсь, но уже понимаю что это такая пропасть, голова гудит уже. Не могу на VBA написть такую тему чтоб копировала значение из одной ячейки таблички и вставляла ее в другую. Потому что VBA впервые вижу и различные форумы мне не помогают. надо начинать с 0 чтоб что нибудь сделать. Кто подскажет как сохранять проджект VBA как отдельный файл и применять его потом?

  5. 8
    Борис Тепляков ответил:

    В Access создаешь связь с внешними данными Exel ([Файл]=>[Внешние данные]=>[Связь с таблицами..]). И они становятся обычными талицами. Далее можешь управлять ими, как обычными Access-таблицами, хоть через SQL, хоть VBA или любую внешнюю оболочку.

  6. 7
    Алексей Вишняков ответил:

    В общем я это и имел ввиду под вторым способом.=)))

  7. 6
    Дмитрий Гайдамович ответил:

    Рискну предложить ещё вариант. Поскольку сам я ненавижу VBA лютой ненавистью (по работе много с ним намучился), поэтому предпочитаю OLE-automation. Как Exel, так и Access программируются через automation (COM-интерфейс IDispatch), поэтому подойдёт любой язык с поддержкой automation. Так, недавно "доступался" до данных вExel-овских таблицах из Ruby: там есть модуль WIN32OLE – милое дело, всё прекрасно работает. С++ имеет смысл применять только в случае, когда хочется снизить до минимума накладные расходы на вызов методов интерфейсов. Обычно для таких разовых задач это не нужно.

    Пример на Ruby. Данная функция сохраняет таблицу Exel в текстовый файл в формате comma-separated values.

    def convert_xls_to_csv(xls_path, csv_path, force_rewrite = true)
    xl_CSV_Windows = 23
    excel = WIN32OLE.new "excel.application"
    excel['Visible'] = false
    excel.Workbooks.Open xls_path
    File.unlink csv_path if File.exist?(csv_path) and force_rewrite
    excel.ActiveWorkbook.Sheets("Sheet1").SaveAs csv_path, xl_CSV_Windows
    excel.ActiveWorkbook.Close 0
    excel.Quit
    csv_path
    end

    Уверен, в Access имеется импорт из CSV

  8. 5
    Алексей Вишняков ответил:

    Ну ребятам денег точно давать не нужно. Есть программа которая перегоняет данные между разными видами БД. В том числе и ексель и аксесс и мускуль и еще куда угодно через одбц=)))

    А если на С++ или дельфи, то надо использовать COM – а это есть геморой большой.(сам 2 недели этим занимался) А в результате все равно практически на VBA придётся писать=)))

    В общем если писать самому у тебя 2 варианта(так как форматы ексель и аксесс закрытые)
    1. Макросы на VBA
    2. Управление через COM

  9. 4
    Александр Фадин ответил:

    2 Иван Игнатов
    Попробуте ребятам дать денег знакомым они за вас в ручную будут забивать данные(может коллеги или одногрупники наверняк кто либо согласится)

  10. 3
    Иван Игнатов ответил:

    А более мощными средствами например C или Delphi это тяжело сделать?

  11. 2
    Алексей Вишняков ответил:

    Вроде в аксесе есть импорт из экселя. а потом удалить лишние строки. Ну автоматизировать можно на VBA

  12. 1
    Денис Елецкий ответил:

    Скорее понадобится VBA. Напиши надстройку к Excel, при подключении показывай дополнительное меню – типа "импорт в акцесс". Для просветления почитай Steven Roman "Использование макросов в Excel", там в частности написано, как надстройки делать.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.