【问题标题】:Using EXCEL as datasource through Microsoft OLE DB provider通过 Microsoft OLE DB 提供程序使用 EXCEL 作为数据源
【发布时间】:2011-05-23 13:19:31
【问题描述】:

我们经常使用一些 Excel 文件作为我们数据库中大量导入的数据源。在代码层面,我们总是将对应的数据源称为:

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

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

有什么想法吗?

【问题讨论】:

    标签: excel ms-access vba oledb recordset


    【解决方案1】:

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

    【讨论】:

    • 为 HansUp 点赞!谢谢!
    • 我希望这比自动 Excel 打开电子表格并检查工作簿中第一个工作表的名称更有效,这是我一直这样做的方式。
    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多