我正在使用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
谢谢!
答案 0 :(得分:0)
没有。就像David Fenton在评论中所说的那样。