我正在尝试使用Excel VBA写入文本文件。我正在做其中的一些:
MyFile1 = "C:\outputFromExcel1.txt"
fnum1 = FreeFile()
Open MyFile1 For Output As fnum1
然后像这样写信给他们:
Print #fnum1, text
上面的所有变量都是用Dim
声明的。我正在向文件写入数百行,并且极少数行被截断 - 即末尾被切断。有没有更好的方法在Excel VBA中写入文件?
编辑:我刚刚意识到它总是被截断的最后几行。所以我想我需要以某种方式关闭或刷新文件?
答案 0 :(得分:15)
您可以使用Close #fnum1
关闭文件句柄,它应该刷新剩余的缓冲区内容。
答案 1 :(得分:4)
是的,您应该使用Close
方法关闭文件。我不确定这是导致问题的原因,但你应该这样做。
如果你在你的VBA代码中进行了大量的文件处理,那么可能值得看看使用FSO(FileSystemObject),我认为它最初是为了让VBScript进行文件处理,但是我更喜欢用VB6和VBA构建在文件处理。 有关详细信息,请参阅here(还有一个大样本,展示了如何在其中一个页面中执行大多数操作)。
答案 2 :(得分:1)
您是否考虑过将文本写入不同的工作表(或不同的工作簿),然后使用:
ActiveWorkbook.SaveAs Filename:="C:\MyFile.txt", FileFormat:=xlText
不确定这是否会给你带来更好的效果(在性能和/或格式方面),但也许值得一试。
答案 3 :(得分:1)
只是一个死灵解决方案:我发现Close #1
方法仍然留下截断的文件。相反,或者除此之外,使用Excel的Application.Quit
关闭Excel。这会刷新缓存并完成对文本文件的写入。