Страницы: 1
RSS
Из excel в access: наименования полей брать из наименований столбцов таблицы
 
Всем доброго времени суток.
Возникла задача. Каждый месяц мне присылают по 20 excelивских документов, который после определенного форматирования необходимо закачать в access.
Вопрос в следующем. Возможно ли написать макрос, чтоб в access закачивались эти данные таким образом, пример:
У нас есть документ по имени "Куршавель"...там наименование столбцов: "год", "количество", "Погода" и тд. Соответственно в access создаться таблица по имени "Куршавель" с полями которые будут соответствовать excelкому документу ( "год", "количество", "Погода" и тд), ну и соответственно значения из excel документа.
И таких документов будет порядка 20 с своими наименованиями столбцов и значениями.

У меня получилось написать макрос на создание базы данных и создание таблицы с определенным столбцами.
Подскажите, как сделать так, чтоб наименование полей бралось из наименования столбцов из таблицы?
 
может тут лучше наоборот, писать макросы в Access по добавлению данных из Excel?
 
Можно и так.
 
drugoy, можно еще сделать 1 файл и под одну "шапку" собирать в него данные из 20, после этого через "Внешние данные" в Access Вы просто подгружаете этот общий файл, при этом создается таблица Access с нужным именем и нужными столбцами.
Изменено: Smiley - 30.09.2015 11:51:59
Учусь программировать :)
 
Smiley, Нет, так дело не пойдет. Потому что в каждом файле свое количество столбцов.
 
Тренироваться на кошках?
Пункт 2.3 правил
 
Цитата
drugoy написал:
Потому что в каждом файле свое количество столбцов.
но ведь в каждом файле есть нужные Вам столбцы, так? Приложите, пожалуйста, примеры файлов, как Вам уже посоветовал Doober
Изменено: Smiley - 30.09.2015 12:14:32
Учусь программировать :)
 
Smiley, ссори. Из всех файилов EXCEL должны подгружаться  свои столбцы.

Файлы удалены: превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: drugoy - 30.09.2015 13:54:25
 
drugoy,
1) Это все файлы со всевозможными шапками?
2) Для каждой компании, у которой около 20 файлов Excel, нужно создать таблицы в Access?
3) Какой вид таблицы должен быть в Access и по какому принципу сопоставлять шапку из Excel с шапкой из Access?
4) Есть ли возможность на начальном этапе указывать названия столбцов в Excel файлах единообразно?
Изменено: Smiley - 30.09.2015 12:29:15
Учусь программировать :)
 
  1. Да, всего порядка 20 подобных файлов.
  2. Для каждого файла, должна создаваться своя таблица со своими полями.
  3. Шапку брать из первой строки Excel документа. А наименование таблицы лучше всего брать из наименования Excel документа.
  4. На начальном этапе к сожалению у нас нет возможности указывать названия столбцов.
Изменено: drugoy - 30.09.2015 13:54:40
 
Цитата
drugoy написал: Да, всего порядка 20 подобных файлов.
20 файлов с названиями компаний или же у каждой компании по 20 файлов, которые надо собрать в 1? Сколько в этом случае компаний? :)
Учусь программировать :)
 
моё скромное мнение...
я так понял Вы хотите накопительный итог по клиентам (видимо, по дистрибуторам товаров), с целью в дальнейшем упростить некий анализ (возможно, продаж - 20 файлов в месяц - похоже на количество рабочих дней), посмотреть динамику, выявить тренд по брендам и в общем...
Даже если получите таблицы, как сейчас задумали, как их потом использовать для анализа? Не, ну может, конечно, нужны просто цифры..
Как вариант, приводить все данные к одному виду и загружать в одну таблицу с добавлением дат. По сути инфа везде одна и та же, просто в разном виде
 
yoozhik, ну с таким мнением ТС-у придется идти в раздел "Работа" :)
Учусь программировать :)
 
Smiley, нет всего 20 файлов это в среднем. Бывает 29 приходит, бывает 15. Все зависит от месяца. Собирать в один файл, мне не нужна.
Пример:
Допустим прислали в июле 2015 года 10 файлов. В итоге должна получиться база данных с 10-ю таблицами. Соответственно в каждой таблице свои данные, свои поля, которые соответствуют содержимому Excel документов.
 
drugoy, Семён Семёныч, ё-моё :)
Учусь программировать :)
 
yoozhik,К одному виду не получиться, потому что в дальнейшем, каждый дистрибьютор обрабатывается отдельно.
 
drugoy, к одному виду все упростило бы. Всегда можно выгрузить в сводную в Excel, выбрать нужного дистрибутора (просто придется в общей таблице сделать поле с названием дистрибутора), и спокойно обрабатывать (а и как вариант, сравнивать их между собой)
Я не настаиваю на своем подходе) Просто не вижу как можно дальше работать с теми базами и таблицами в том виде, в котором Вы хотите их получить. Можете просто убить кучу времени на создание, а и потом на обработку данных
 
Не слушаетесь советов, ваше право.
Код
Sub Insert_Into()
    Dim Sh As Worksheet, DX, Header As String, _
    Sql As String, values As String
    Set Sh = ActiveSheet
    With Sh
        LastCol = .Range("iv1").End(xlToLeft).Column
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        Header = " INSERT INTO [Ваша Таблица]( [" & _
        Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(.Range(.Cells(1, 1), _
        .Cells(1, LastCol)))), "],[") & "])"
 
    For n = 2 To LastRow 
      values = "  values ( '" & _
    Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(.Range(.Cells(n, 1), _
    .Cells(n, LastCol)))), "','") & "')"
   Sql = Header & values
      Debug.Print Sql ' exec ????
    Next
   End With

End Sub
Изменено: Doober - 30.09.2015 14:24:11
 
yoozhik, просто после этого я все закачиваю в oracle, от куда и выгружаю сводную после некоторых действий.
Doober,Спасибо. Сейчас буду пробовать.
 
Цитата
yoozhik написал:
...к одному виду и загружать в одну таблицу с добавлением дат...
... и названий фирм :)
Цитата
yoozhik написал:
Просто не вижу как можно дальше работать с теми базами и таблицами в том виде, в котором Вы хотите их получить. Можете просто убить кучу времени на создание, а и потом на обработку данных
Совершенно с Вами согласен! Получается, что просто таблицы ради таблиц, но не в ексель, а в акцесс. "И чо?!" :)
Получается, что в след. месяце будет следующий файл акцесс с новым числом таблиц?
Не, ну, в общем то, можно, конечно, потом пробегаться по таблицам и собирать их с пом. Union и т.д. в общую таблицу...

А, теперь понятно. Дальше - Оракул....
Изменено: Михаил Лебедев - 01.10.2015 06:46:17 (Прочитал след. сообщение от другого)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
Страницы: 1
Наверх