Я работаю с поставщиком OLE DB для Jet для выполнения запросов к электронным таблицам в Excel с использованием VBA. Есть ли способ выполнить следующий код на несохраненной книге?
Например, 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
Спасибо!