Импорт в Access из Excel

Программирование на Visual Basic for Applications
hunumununukanuka
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 13.06.2006 (Вт) 9:33

Импорт в Access из Excel

Сообщение hunumununukanuka » 13.06.2006 (Вт) 9:41

Доброго времени суток.

У меня такая проблемка. Необходимо красиво организовать импорт из Excel'я данных, причем в уже сформированную таблицу. Данные в Excel'е храняться в таблице с множеством полей, имена которых не совподают с таблицей в Accesse. Как это все можно организовать?
Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.06.2006 (Вт) 10:21

Завести таблицу соответствий полей и пройтись циклом по строкам.
Lasciate ogni speranza, voi ch'entrate.

hunumununukanuka
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 13.06.2006 (Вт) 9:33

Сообщение hunumununukanuka » 13.06.2006 (Вт) 14:22

alibek писал(а):Завести таблицу соответствий полей и пройтись циклом по строкам.


А можно на этом моменте поподробней. Т.е. меня интерисует сам код. Как это техтически реализовать...

Спасибо.

Lexa
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 17.11.2005 (Чт) 0:13
Откуда: Тверь

Сообщение Lexa » 19.06.2006 (Пн) 0:52

Поможет ли ?

Так создавал коллекцию столбцов (свой класс, т.к. как получить Key из коллекции не знаю :) Теоретическм в коллекции Item -номер Excel столбца, Key - Столбец в Access, Пришлось добавить Key
дополнительно). Так Add в классе выглядит:

Код: Выделить всё
Public Function Add(Key As String, ExcelColumnName As String, ExcelColumnNumber As Integer, Optional sKey As String) As clsColExcel


Кеу - наименование столбца

Создание коллекции
Код: Выделить всё
Private Function CreateCol(exSheet As Excel.Worksheet) As colExcelToAdo
   
    Set CreateCol = New colExcelToAdo
   
    For I = 1 To 15    '            максимальное количество столбцов в                                                     таблице с екселом
    If Len(exSheet.Cells(1, I).Value) > 0 Then
       CreateCol.Add exSheet.Cells(1, I).Value, exSheet.Cells(1, I).Value, CInt(I), exSheet.Cells(1, I).Value

    End If
    Next
End Function


Затем вставлял так:

Код: Выделить всё
colAdress=CreateCol(<Екселовский лист>)

   For Each cn In colAdress
        rs.Fields(cn.ExcelColumnName).Value = eS.Cells(cp, cn.ExcelColumnNumber).Value
   Next


Вроде так, но наверное можно написать гораздо проще.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 50

    TopList