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

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

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

有没有办法使用Excel临时文件作为Jet的数据源? 我想testing这个,但我甚至不知道如何返回Excel临时文件的path和名称。

 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 

谢谢!

不,就像David Fenton在评论中所说的那样。