Лучший способ прочитать файл Excel в базе данных Access

Какой «лучший» способ прочитать (просто прочитать) файл Excel из приложения Access 2007? Я только хочу перебрать строки и поместить данные в таблицу Access.

Мне не нужен импорт вручную (диалоговое окно «Получить внешние данные»), а только с помощью VBA. Пользователь получает форму с кнопкой «Обзор», а затем указывает на файл Excel с определенным содержимым / форматом. После этого код VBA считывает данные и помещает их в базу данных Access.


person waanders    schedule 25.05.2010    source источник


Ответы (3)


Вы можете попробовать метод DoCmd.TransferSpreadsheet.

DoCmd.TransferSpreadsheet acImport, , "from_excel","C:\Access\demo.xls", True

Это импортирует данные электронной таблицы в таблицу с именем from_excel и предполагает, что первая строка электронной таблицы содержит имена полей. См. Справку Access для TransferSpreadsheet или в Интернете здесь, Больше подробностей.

person HansUp    schedule 25.05.2010

Если вы хотите прочитать всю электронную таблицу, вы можете импортировать электронную таблицу Excel прямо в Access. См. здесь или здесь.

Вы также можете выбрать ссылку на электронную таблицу Excel вместо ее импорта. Таким образом, любые изменения в электронной таблице Excel будут отражены в связанной таблице. Однако вы не сможете вносить изменения из Access.

Третий вариант - написать код VBA в Access, чтобы открыть набор записей и прочитать электронную таблицу. См. Ответы KeithG в эту ветку. Вы можете сделать что-то вроде этого, чтобы открыть электронную таблицу в VBA:

Dim xl As Excel.Application
Dim xlsht As Excel.Worksheet
Dim xlWrkBk As Excel.Workbook

Set xl = CreateObject("Excel.Application")
Set xlWrkBk = GetObject("H:/ggg.xls")
Set xlsht = xlWrkBk.Worksheets(1)
person TLiebe    schedule 25.05.2010
comment
Спасибо, отлично, но я имел в виду вариант от VBA. Я расширил вопрос, см. Выше - person waanders; 25.05.2010
comment
См. Мой отредактированный пост для получения информации о том, как получить доступ к электронной таблице через VBA. - person TLiebe; 25.05.2010
comment
Вы можете запустить импорт в VBA с помощью DoCmd.TransferSpreadsheet. Мне кажется, этот ответ без упоминания этого кажется очень неполным. - person David-W-Fenton; 25.05.2010
comment
TLiebe ›Спасибо за ответ, но я предпочитаю ответ TransferSpreadsheet. К сожалению, я могу просто отметить 1 ответ как принятый. - person waanders; 27.05.2010

Попробуйте что-то вроде этого:

Dim excelApp As Excel.Application
Dim workbook As Excel.Workbook
Dim worksheet As Excel.Worksheet

Set excelApp = CreateObject("Excel.application")
Set workbook = excelApp.Open("C:\someFileName.xls")
Set worksheet = workbook.Worksheets(1)

Затем прокрутите строки и столбцы, извлеките данные из ячеек и вставьте их в базу данных. (Вы можете использовать метод worksheet.cells.) Попробуйте поискать в Google образцы кода.

person froadie    schedule 25.05.2010
comment
Итак, как вы перебираете строки и столбцы? Я хочу импортировать xlsx в таблицу, но поскольку столбцы не обязательно соответствуют столбцам в таблице, мне нужно вручную выполнить перенаправление. - person Christine; 29.04.2017