2010-05-25 4 views
4

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

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

ответ

7

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

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

, что импорт электронных таблиц данных в таблицу с именем from_excel, и принимает первую строку таблицы содержит имена полей. Дополнительную информацию см. В справке Access для TransferSpreadsheet или онлайн here.

3

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

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

Третий вариант заключается в написании кода VBA в Access для открытия набора записей и чтения электронной таблицы. См. Ответы от KeithG в this thread. Вы можете сделать что-то вроде этого, чтобы открыть таблицу в 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) 
+0

Спасибо, отличные вещи, но я имел в виду вариант от VBA. Я продлил вопрос, см. Выше – waanders

+0

См. Отредактированный пост для получения информации о том, как получить доступ к электронной таблице через VBA. – TLiebe

+0

Вы можете запустить импорт в VBA с помощью DoCmd.TransferSpreadsheet. Мне кажется, этот ответ кажется очень неполным без упоминания об этом. –

0

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

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) 

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

+0

Итак, как вы прокручиваете строки и столбцы? Я хочу импортировать xlsx в таблицу, но поскольку столбцы не обязательно совпадают с таблицами, мне нужно вручную выполнить перенаправление. – Hill