Использование EXCEL в качестве источника данных через поставщика Microsoft OLE DB - PullRequest
0 голосов
/ 23 мая 2011

Мы часто используем некоторые файлы Excel в качестве источника данных для массового импорта в нашу базу данных.На уровне кода мы всегда ссылаемся на соответствующий источник данных как:

set rs = New ADODB.recordset
rs.open "SELECT * FROM [sheet1$]", myConnectionString, etc

Конечно, эта процедура работает, только если в файле Excel есть лист с именем [sheet1].Я хотел бы добавить здесь некоторый код управления листами, но без необходимости создавать экземпляр исходного файла Excel, открывать его и т. Д. (Мои пользователи могут получить файл с другим именем листа и могут не иметь установленного Excel).).

Есть идеи?

1 Ответ

2 голосов
/ 24 мая 2011

Вы можете открыть набор записей методом ADO OpenSchema и затем перечислить имена таблиц (листов) в своей рабочей книге.

Public Sub SheetsInWorkbook()
    Dim strConnect As String
    Dim cn As Object
    Dim rs As Object
    Dim strPath As String

    strPath = CurrentProject.Path & Chr(92) & "temp.xls"
    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source='" & strPath & "';" _
        & "Extended Properties='Excel 8.0';"
    Set cn = CreateObject("ADODB.Connection")
    cn.ConnectionString = strConnect
    cn.Open
    Set rs = cn.OpenSchema(20) '20 = adSchemaTables '
    Debug.Print "TABLE_NAME"
    Do While Not rs.EOF
        Debug.Print rs!TABLE_NAME
        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub
...