通过Microsoft OLE DB提供程序使用EXCEL作为数据源

时间:2011-05-23 13:19:31

标签: excel ms-access vba oledb recordset

我们经常使用一些Excel文件作为数据源,以便在我们的数据库中进行大量导入。在代码级别,我们始终将相应的数据源称为:

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

当然,只有当Excel文件中有一张名为[sheet1]的工作表时,此程序才有效。我想在这里添加一些工作表管理代码,但无需创建原始Excel文件的实例,打开它等等(我的用户可能会获得一个具有不同工作表名称的文件,并且可能没有安装Excel )。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用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