2010-06-21 78 views
13

我正在嘗試使用Excel VBA寫入文本文件。我在做其中的幾個:如何從Excel VBA可靠地寫入文本文件?

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

,然後像這樣寫對他們說:

Print #fnum1, text 

在上述所有變量的聲明只是Dim。我正在寫幾百行文件,而且很少會有線被截斷 - 即結束被截斷。有沒有更好的方法在Excel VBA中寫入文件?

編輯:我剛剛意識到,它總是被寫入被截斷的最後一行。所以我想我需要關閉或刷新文件?

+0

在寫完文件後是否關閉了文件?關閉應該將最後一行刷新到磁盤。 – 2010-06-21 14:48:35

回答

15

您可以使用Close #fnum1來關閉文件句柄,它應該清空剩餘的緩衝區內容。

1

你有沒有考慮寫作文到不同的表(或不同的工作簿),然後使用:

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

不知道這是否會帶來更好的效果(在性能和/或格式條款) ,但也許值得一試。

4

是的,你應該用Close方法關閉文件。我不確定這是什麼原因導致的問題,但你應該這樣做。

如果你在VBA代碼中做了很多文件處理,可能值得使用FSO(FileSystemObject),我認爲它最初是爲了讓VBScript做文件處理,但我更喜歡VB6和VBA內置文件處理。 有關更多詳細信息,請參閱here(並且還有一個大樣本展示瞭如何在其中一個頁面中完成所需的大部分工作)。

1

只是一個necro解決方案:我發現Close #1方法仍然留下一個截斷的文件。相反或除此之外,使用Excel的Application.Quit關閉Excel。這會刷新緩存並完成對文本文件的寫入。

相關問題