有没有办法在未保存的Excel工作簿上使用OLE DB Provider for Jet?

时间:2010-01-08 22:26:18

标签: excel vba oledb jet

我正在使用Microsoft的OLE DB Provider for Jet,使用VBA在Excel中的电子表格上执行查询。有没有办法在未保存的工作簿上执行以下代码?

例如,如果从未保存工作簿,ActiveWorkbook.FullName将返回“Book1”。在这种情况下,数据源将假定路径是活动目录,并且因为文件从未保存而出错。

有没有办法将Excel临时文件用作Jet的数据源?我想测试一下,但我甚至不知道如何返回Excel临时文件的路径和名称。

Public Sub LocalJetQuery()

    Dim objStartingRange As Range
    Dim objConnection As New ADODB.Connection
    Dim objRecordset As New ADODB.Recordset

    Dim strDSN As String
    Dim strSQL As String

    Set objStartingRange = Application.Selection

    If CLng(Application.Version) >= 12 Then
        strDSN = "Provider=Microsoft.ACE.OLEDB.12.0;" _
        & "Data Source=" & objStartingRange.Worksheet.Parent.FullName & ";" _
        & "Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"";"
    Else
        strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=" & objStartingRange.Worksheet.Parent.FullName & ";" _
        & "Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";"
    End If

    strSQL = "SELECT * FROM [" & objStartingRange.Worksheet.Name & "$];"

    objConnection.Open strDSN
    objRecordset.Open strSQL, objConnection

    Application.Workbooks.Add(xlWBATWorksheet).Sheets(1).Cells(1, 1).CopyFromRecordset objRecordset

End Sub

谢谢!

1 个答案:

答案 0 :(得分:0)

没有。就像David Fenton在评论中所说的那样。