我在Excel 2007中有一些VBA代码可以创建,填充,然后关闭一个Textstream文件对象(下面的缩写代码段)。
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。有谁知道发生了什么?
答案 0 :(得分:2)
尝试这个简单的例子 - 该文件可用于编辑,例如:记事本,代码运行后:
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