2014-02-12 126 views
1

有很多关于如何写在VBA文本文件的信息,但我需要的是写和保存而不关闭文件。我运行一些耗时的宏,并且需要不时地保存信息,因为宏往往会崩溃。保存文本文件,它

这就是我现在所拥有的

sFile = ThisWorkbook.Path & "\" & wsRes & ".txt" 
    lFile = FreeFile 
    Open sFile For Append As lFile 
    Print #lFile, "======" //this is where I need to save the file as well. 
    Close lFile 

问候

回答

1

恐怕VBA不能这样做,因为-是,除了使用关闭,然后再重新打开它。 Scripting.FileSystemObject也缺少这个功能。

为了有一个冲洗能够文件输出,你可以使用Windows API编写你的文件。这里指针的CreateFile & CloseHandle的用于打开/关闭文件,写文件,写它,并写任何东西剩下的写入缓冲区FlushFileBuffers。

+0

谢谢。如果我再次关闭并打开文件,我可以告诉VBA继续从某一行写入数据吗?也许最好的解决方法是删除旧文件并为每个输出保存一个新文件? – OSandstedt

+0

当然,VBA的“开放”可以附加到现有的文件,就像你已经做的那样。当写完整行时,它应该在追加时开始写新行......除非Close在文件缓冲区崩溃时不刷新文件缓冲区。你也可以测试FileSystemObject;它也可以在打开时附加到文件中;也许该组件在崩溃之前确实正确地冲洗? –

+0

看来Close应该是冲水的,所以我想我会先试一下。如果没有,我会看看FileSystemObject。 谢谢你的帮助! – OSandstedt