如何让Excel在我使用ADO访问的另一个Excel文件上释放锁定?

时间:2011-04-22 20:50:03

标签: excel-vba ado excel-2003 vba excel

我在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 ADODB.Recordset

  Call vRecordSet.Open(Source:=strSQl, ActiveConnection:=vWorkbookConnectionString, _
    CursorType:=adOpenForwardOnly, LockType:=adLockReadOnly, Options:=adCmdText)

vRecordSet稍后用于创建数据透视表。

我的目标是在用户关闭运行此代码的工作簿时删除作为此RecordSet源的文件(上例中为C:\ SomeExcelFile.xls)。

运行此ADO查询时文件被锁定,并且在工作簿关闭之后似乎不会释放。调用vRecordSet.Close不会释放它。

是否可以强制Excel释放对此文件的锁定,以便我可以以编程方式删除它?

2 个答案:

答案 0 :(得分:1)

vRecordSet.Close来电之后,您是否尝试添加以下内容,看看它是否有所作为:

Set vRecordSet = Nothing

答案 1 :(得分:0)

未经测试的巫毒:使用变量来保存ADODB.Connection,将其传递给打开,关闭记录集和连接。