2009-07-07 3 views
4

Как я могу открыть подключение ADO к электронной таблице Excel 2007?Открытие соединения ADO с таблицей Excel в VBA

Я делаю это для того, чтобы импортировать данные в Access 2007. Довольно досадно, что перед импортом данные необходимо отбросить и предварительно обработать, поэтому я хочу открыть ADO-соединение для его чтения.

ответ

6
Set oConn = CreateObject("ADODB.Connection") 
oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcel2007File.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";" 
oConn.Open 

Обратите внимание, что вам нужно использовать ACE driver вместо JET. См. Также Connection strings for Excel 2007.

1

Если вы собираетесь использовать импорт более одного раза (например, некоторый тип ежедневной службы отчетов), вы можете попробовать другой подход, чем ADO.

В результате я создал модуль в Access, который предварительно обрабатывает листы Excel (поскольку лист, который импортируется каждый день, изменяется), а затем устанавливает лист как источник связанной таблицы. Затем я запрашиваю связанную таблицу с вызовом «INSERT INTO» DoCmd.RunSQL, чтобы получить данные из Excel и в базу данных.

Если вы хотите, я могу перейти более подробно.

+0

Вы можете создавать связанные таблицы и выполнять инструкции INSERT INTO с использованием ADO. – onedaywhen

1
Set cnn = New ADODB.Connection 
    'cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFullFileName & ";Extended Properties = Excel 12.0 Macro; HDR=No;" 
    'cnn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; data source=" & sFullFileName & ";Extended Properties=Excel 8.0" 
    cnn.ConnectionString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & sFullFileName 
    cnn.Open 
Смежные вопросы