我如何可以从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.Quit
closuresExcel。 这将刷新caching并完成对文本文件的写入。