2016-12-02 134 views
2

我在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

回答

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 
+1

乾杯。是的,就像@KazimierzJawor原來提到的那樣,它是我失蹤的'Set obj = Nothing'。 – blackworx

相關問題