我在Excel 2003文檔中使用VBA宏通過ADO查詢另一個Excel 2003文檔。該代碼看起來是這樣的:如何讓Excel在使用ADO訪問的另一個Excel文件上釋放其鎖定?
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發佈其對該文件的鎖定,以便我可以通過編程方式將其刪除?
我對VBA相當陌生,而且我不太明白這會帶來什麼好處。你是說強迫RecordSet被垃圾收集可能會導致文件上的鎖被釋放? – Syntactic 2011-04-22 21:27:50
我剛剛看到的情況下,將它設置爲無效可以有所作爲。它可能會或可能不會幫助你的情況。你試過了嗎?結果是什麼? – dcp 2011-04-25 08:55:30
它的工作原理!看起來像GCing的Recordset does * * *關閉它沒有。 – Syntactic 2011-04-25 18:08:24