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

时间:2010-06-21 14:41:09

标签: excel vba excel-vba

我正在尝试使用Excel VBA写入文本文件。我正在做其中的一些:

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

然后像这样写信给他们:

Print #fnum1, text

上面的所有变量都是用Dim声明的。我正在向文件写入数百行,并且极少数行被截断 - 即末尾被切断。有没有更好的方法在Excel VBA中写入文件?

编辑:我刚刚意识到它总是被截断的最后几行。所以我想我需要以某种方式关闭或刷新文件?

4 个答案:

答案 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。这会刷新缓存并完成对文本文件的写入。