关闭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。任何人都知道发生了什么事?
答
试试这个简单的例子 - 该文件可通过例如编辑来进行编辑。记事本,代码运行后:
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
如果您另外'设置CSV = Nothing'和相同的项目相关的其他对象变量? –
谢谢 - 这固定它。道歉,我从来没有在Robin Mackenzie将其作为实际答案发布之前进行测试。 – blackworx
如果在同一个过程中声明了'CSV',那么当程序退出时它应该被破坏。你的变量在程序中声明了吗?您也可以使用'FSO.OpenTextFile'方法(如果需要,仍然强制创建一个新文件)。 – ThunderFrame