我如何可以从Excel VBA可靠地写入文本文件?

我正在尝试使用Excel VBA来写入文本文件。 我正在做一些这些:

MyFile1 = "C:\outputFromExcel1.txt" fnum1 = FreeFile() Open MyFile1 For Output As fnum1 

然后像这样写给他们:

 Print #fnum1, text 

上面的所有variables都是用Dim来声明的。 我正在写数百行文件,而且很less,行被截断 – 即结束被砍掉。 有没有更好的方法写入Excel VBA中的文件?

编辑:我刚刚意识到,它总是被写的最后一行被截断。 所以我想我需要closures或刷新文件?

您可以使用Close #fnum1来closures文件句柄,并且应该清空剩余的缓冲区内容。

是的,您应该使用Close方法closures文件。 我不确定这是什么原因造成的问题,但你应该这样做。

如果你在VBA代码中执行大量的文件操作,可能需要考虑使用FSO(FileSystemObject),我认为最初是为了让VBScript进行文件处理,但是我更喜欢VB6和VBA在文件处理。 在这里可以看到更多细节(还有一个大样本展示了如何在其中一个页面中完成大部分的事情)。

您是否考虑将文本写入不同的工作表(或不同的工作簿),然后使用:

 ActiveWorkbook.SaveAs Filename:="C:\MyFile.txt", FileFormat:=xlText 

不知道这是否会给你更好的结果(在性能和/或格式方面),但也许值得一试。

只是一个necro解决scheme:我发现Close #1方法仍然留下一个截断的文件。 相反,或除此之外,使用Excel的Application.QuitclosuresExcel。 这将刷新caching并完成对文本文件的写入。