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

时间:2016-12-02 10:43:28

标签: excel vba excel-vba csv

我在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。有谁知道发生了什么?

1 个答案:

答案 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