Я использую макрос VBA в документе Excel 2003 для запроса другого документа Excel 2003 через ADO. Код выглядит примерно так:
Dim vRecordSet As ADODB.Recordset
vWorkbookConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SomeExcelFile.xls;Extended Properties=Excel 8.0;"
Set vRecordSet = New ADODB.Recordset
Call vRecordSet.Open(Source:=strSQl, ActiveConnection:=vWorkbookConnectionString, _
CursorType:=adOpenForwardOnly, LockType:=adLockReadOnly, Options:=adCmdText)
vRecordSet
позже используется для создания PivotCache.
Моя цель - удалить файл, который является источником этого RecordSet (C: \ SomeExcelFile.xls в приведенном выше примере), когда пользователь закрывает книгу, из которой запускается этот код.
Файл блокируется при выполнении этого запроса ADO, и, похоже, он не освобождается до тех пор, пока книга не будет закрыта. Вызов vRecordSet.Close
не освобождает его.
Можно ли заставить Excel снять блокировку этого файла, чтобы я мог удалить его программно?