Bankir.Ru
11 декабря, воскресенье 12:55

Объявление

Свернуть
Пока нет объявлений.

Возможно ли зделать Базу данных в ACCESS, из 300 файлов exel ?

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Возможно ли зделать Базу данных в ACCESS, из 300 файлов exel ?

    Подскажите как, или хотя-бы возможно? В каждом файле по 3 листа. Просто дело в том что если надо сделать какую-нибудь выборку например телефоны, обороты за месяц и т. д. приходиться щелкать каждый фаил. Очень неудобно.

  • #2
    DENISOFF Конечно можно, Вас спасет VBA и DAO.
    Romik

    Комментарий


    • #3
      VBA и DAO. Можно чюточку по подробнее...

      Комментарий


      • #4
        DENISOFF Создаем книгу в экселе, в которой пишем макрос по открыванию и закрыванию 300 книг поименованных, например, Book1.xls,Book2.xls
        Dim wb As Excel.Workbook = _
        ThisApplication.Workbooks.Open("Book1.xls")
        'Visual Basic for Applications(VBA)
        далее
        Dim db as Database '(DAO Data Access Objects)
        db.Open("my.mdb")
        Sql="Insert into mytable..."
        db.Execute(Sql)
        db.Close
        wb.Close
        Romik

        Комментарий


        • #5
          Если информация хорошо структурирована, то проще сделать закачку или просто подключение файлов Excel из Access путем написания маленькой процедурки. Я сам использую именованные диапазоны в файлах Еxcel, для связи с базами данных Access

          Комментарий


          • #6
            Romik Спасибо за совет! Сейчас буду пробовать.

            Комментарий


            • #7
              Moj А можно чуть подробней? Про эту маленькую процедурку.

              Комментарий


              • #8
                Romik Блин нифига не получается... Я ламер. Где все это прописывать?

                Комментарий


                • #9
                  DENISOFF
                  В Access-e процедурка (для одного файла):

                  Private Sub Кнопка0_Click()
                  i = 1
                  NameExcel = "Book" & i & ".xls"
                  ' Подключение файла екселя как внешнюю таблицу
                  ' Ячейки A1:B5 файла С:\Book1.xls подключаются в Access как таблица BookXLS

                  DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel3, "BookXls", "C:\" & NameExcel, , "A1:B5"

                  ................ Здесь пишем обработку

                  ' Отключаем файл
                  DoCmd.DeleteObject acTable, "BookXls"

                  End Sub

                  Для остальных 299 все это нужно вложить в цикл

                  Комментарий


                  • #10
                    Moj Спасибо. Щя пытаюсь чето зделать. Написал в MS Visual Basic. Это появилось в модулях в базе данных. На этом я застопорился. я вообще туда пошел?

                    Комментарий


                    • #11
                      DENISOFF Надо нажать в Экселе ALT+F12 на новой книге, появится окно проекта VBA
                      далее кликаемся в ссылки, делаем ссылку на DAO
                      Поименовать все книги как пишет MOJ
                      далее цикл:
                      'здесь внешний цикл по книгам
                      ...
                      'здесь внешний цикл по листам книги
                      ...
                      set ws=wb.Worksheets("Лист1")
                      ws.Activate
                      nn=ws.GetRecordCount
                      For i=1 to nn
                      Sql="Insert into my table (Field1,Field2,Field3...) values ('" & ws.[a1].offset(i-1,0).Value & "','" & ws.[b1].offset(i-1,0).Value & "','" & ws.[c1].offset(i-1,0).Value & "'...)"
                      db.Execute(Sql)
                      Next
                      ...
                      'конец цикла по листам
                      ...
                      'конец цикла по книгам
                      В результате имеем все книги в одной таблице Excel
                      Romik

                      Комментарий


                      • #12
                        DENISOFF

                        Лови примерчик. Внутри база Access.

                        Комментарий


                        • #13
                          Блин. Спасибо вм большое за помощь. Но у меня ничерта не получаеться.
                          Moj Жму я на эту кнопку, ну понятно в процедуре названия файла и адрес я переписал на свои. Но в итоге кнопка делает просто копию документа и все.
                          Romik А какие названия должны быть? Их менять же можно? Я в процедуре переписывал. Но толку тоже никакого. Щя эту тему на принтер кину. И дома попробую поковыряться. Потом сообщу результат.

                          Комментарий


                          • #14
                            DENISOFF
                            Правильно, она подключает файл, а далее с ним нужно что-то сделать, т.е.
                            например написать запрос который будет переписывать данные из этого файла в табицу базыу Access-а

                            Комментарий


                            • #15
                              Moj Подключает, ты в смысле об этой копии. Так это копия пустая. Т.е. там ничего нету. Просто пустая книга.

                              Комментарий


                              • #16
                                DENISOFF

                                Скинь мне пример excel файла, я попробую его прицепить и перекачать

                                Е-Mail: moj@vladbkb.com

                                Комментарий


                                • #17
                                  2ALL Вот не удержался Извините plz...

                                  2DENISOFF Вы не обижайтесь на сам ваш вопрос несколько странен. Если у вас 300 !!!! Excell файлов то 99% что ваша информация ПЛОХО структурированна... Но т.к. вы не знаете таких вещей как DAO или хотябы ODBC то вы сами не сможете ПРАВИЛЬНО ее структурировать (IMHO). Что отсюда следует? Отсюда следует что вы рискуете сдать отчет с данными взятыми с потолка. Если вы раньше делали все вручную то на каждом этапе вы контролировали процесс, а сейчас не будете. Теперь совет: 1 Найдите гуру по БД и напоите его пивом. В процессе напаивания объясните проблему, но не в виде 300 xls -> 1 mdb А в виде: вот есть фин информация (обороты, остатки, счета, клиенты, документы и т.п.) Хочется видеть все в следующих разрезах.... И закачивать это из - .....
                                  Я думаю тогда Excell у вас умрет......
                                  Последний раз редактировалось Dem_aka_Deep; 12.09.2003, 10:29.

                                  Комментарий


                                  • #18
                                    Dem_aka_Deep Да, я свами согласен. Но блин где найти этого гуру? Ищу... Но вот пока на мой вопрос откликнулись только на этом форуме. (класный форум, теперь к меня появился второй любимый форум). А по поводу найти у себя в городе. Можно но сложно. Но в этом направлении я тоже работаю.
                                    Спасибо за совет.

                                    Комментарий


                                    • #19
                                      DENISOFF Складываете все свои файлы в отдельную папку и далее в макросе пишем:
                                      MyName=Dir("C:\MyFolder\*.xls") 'вытаскиваем все файлы с расширением .xls
                                      Do While MyName > "" 'перебор всех файлов в папке пока они есть
                                      ThisApplication.Workbooks.Open(MyName)
                                      ...'см. предыдущие посты
                                      MyName=Dir() 'вытаскиваем след. файл
                                      Loop
                                      PS: А вот идея с пивом в предыдущем посте весьма неплоха! Рекомендую прислушаться...
                                      Romik

                                      Комментарий

                                      Пользователи, просматривающие эту тему

                                      Свернуть

                                      Присутствует 1. Участников: 0, гостей: 1.

                                      Обработка...
                                      X