如何让Excel释放对另一个Excel文件I';你是用ADO访问的吗?
我正在使用Excel 2003文档中的VBA宏通过ADO查询另一个Excel 2003文档。代码如下所示:如何让Excel释放对另一个Excel文件I';你是用ADO访问的吗?,excel,ado,excel-2003,vba,Excel,Ado,Excel 2003,Vba,我正在使用Excel 2003文档中的VBA宏通过ADO查询另一个Excel 2003文档。代码如下所示: 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
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
稍后用于创建数据透视缓存
我的目标是在用户关闭运行此代码的工作簿时删除此记录集的源文件(上例中为C:\SomeExcelFile.xls)
运行此ADO查询时,该文件将被锁定,并且在关闭工作簿之前,该文件似乎不会被释放。调用vRecordSet.Close
不会释放它
是否可以强制Excel释放对此文件的锁定,以便我可以通过编程方式删除它 您是否尝试在
vRecordSet之后添加以下内容。关闭调用以查看是否有影响:
Set vRecordSet = Nothing
未经测试的巫毒:使用一个变量来保存ADODB.Connection,将其传递到打开,关闭记录集和连接。我对VBA比较陌生,我不知道这会带来什么好处。你是说强制对记录集进行垃圾收集可能会导致文件上的锁被释放吗?我刚刚看到过将其设置为nothing会产生不同的情况。这对你的情况可能有帮助,也可能没有帮助。你试过了吗?结果是什么?成功了!似乎GCG记录集做了一些关闭它没有做的事情。