使用FSO避免在文本文件末尾换行

时间:2014-12-04 10:59:47

标签: vba excel-vba excel

我正在使用FSO在VBA中创建并写入文本文件。我能够创建所需的文件,除了在文本文件的末尾创建换行符,即如果我的文件有4行,则有第5行是空白的。有没有办法删除最后一行?

以下是我目前使用的代码:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = fso.CreateTextFile(PathName)
For i = 1 To LastRow
    oFile.WriteLine Sheets("Sheet1").Range("A" & i).Value
Next i
oFile.Close
Set fso = Nothing
Set oFile = Nothing

我在最后尝试了各种方法来删除这个换行符,但到目前为止我没有成功。

非常感谢你的帮助

2 个答案:

答案 0 :(得分:2)

检查您是否正在写入最后一行(i = LastRow),然后使用TextStream的Write方法而不是WriteLine

答案 1 :(得分:2)

我建议您阅读Microsoft网站上有关FSO的官方文档: http://msdn.microsoft.com/en-us/library/6tkce7xa(v=vs.84).aspx

在其他方面,你会发现FSO提供的所有方法。

Writeline 方法: 将指定的字符串和换行符写入TextStream文件。

方法: 将指定的字符串写入TextStream文件。

由于您仅使用 Writeline 方法,因此每行末尾都有换行符,包括最后一行。 要在文件末尾没有新行char,您应该在编写最后一行时进行测试,并相应地更改方法:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = fso.CreateTextFile(PathName)
For i = 1 To LastRow
    If i = LastRow then
      oFile.Write Sheets("Sheet1").Range("A" & i).Value    
    Else
        oFile.WriteLine Sheets("Sheet1").Range("A" & i).Value
   End If
Next i          
oFile.Close          
Set fso = Nothing          
Set oFile = Nothing