Как я могу заставить Excel снять блокировку с другого файла Excel, к которому я обращался с помощью ADO? - PullRequest
0 голосов
/ 23 апреля 2011

Я использую макрос 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 снять блокировку этого файла, чтобы я мог удалить его программно?

Ответы [ 2 ]

1 голос
/ 23 апреля 2011

Попытались ли вы добавить следующее после вашего vRecordSet.Close звонка, чтобы увидеть, имеет ли это значение:

Set vRecordSet = Nothing
0 голосов
/ 23 апреля 2011

Непроверенный Voodoo: используйте переменную для хранения ADODB.Connection, передайте ее для открытия, закройте и набор записей, и соединение.

...