关闭VBA后,Textstream对象在Excel中保持打开状态

问题描述:

我在Excel 2007中创建,填充并关闭了一个Textstream文件对象(下面简写的片段)中有一些VBA代码。关闭VBA后,Textstream对象在Excel中保持打开状态

Set CSV = FSO.CreateTextFile(strPathOut & Application.PathSeparator & strFileOut) 

'Fill the file 

CSV.Close 

代码工作完美,包括CSV.Close指令,但是如果我再尝试删除或修改文件(例如,在Windows资源管理器或记事本)的系统要求的Excel仍有打开该文件。看似唯一的解决方法是关闭Excel本身。

我检查过CSV.Close正在做VBA方面应该做的事情;它不会导致运行时错误,当然该文件不再可用于在该指令后写入。

我的项目早期绑定到Microsoft Scripting Runtime scrrun.dll。我尝试删除该引用,但我得到了相同的结果。

这不是项目的展示者,但它是开发过程中的PITA。任何人都知道发生了什么事?

+1

如果您另外'设置CSV = Nothing'和相同的项目相关的其他对象变量? –

+1

谢谢 - 这固定它。道歉,我从来没有在Robin Mackenzie将其作为实际答案发布之前进行测试。 – blackworx

+0

如果在同一个过程中声明了'CSV',那么当程序退出时它应该被破坏。你的变量在程序中声明了吗?您也可以使用'FSO.OpenTextFile'方法(如果需要,仍然强制创建一个新文件)。 – ThunderFrame

试试这个简单的例子 - 该文件可通过例如编辑来进行编辑。记事本,代码运行后:

Option Explicit 

Sub Test() 

    Dim objFSO As New FileSystemObject 
    Dim objStream As TextStream 
    Dim i As Integer 

    Set objStream = objFSO.CreateTextFile("D:\temp.txt") 
    With objStream 
     For i = 1 To 10 
      .WriteLine CStr(i) 
     Next i 
     .Close 
    End With 

    Set objStream = Nothing 
    Set objFSO = Nothing 

End Sub 
+1

干杯。是的,就像@KazimierzJawor原来提到的那样,它是我失踪的'Set obj = Nothing'。 – blackworx