1

我正在使用 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

谢谢!

4

1 回答 1

0

不,就像大卫芬顿在评论中所说的那样。

于 2010-01-31T19:04:24.457 回答