我对VBA比较陌生,想要完成一些非常简单的事情,但是为什么这不起作用我很困惑。我正在从文件中读取行,如果在notepad ++中打开,则每行最后都有一个CRLF。我想删除CR。在notepad ++中,我可以做一个替换,用LF替换CRLF,事情很好。但是,我现在在VBA中进行的测试并没有正确执行此操作。下面是我在Notepad ++中处理的字符串示例:
总结 - 我去了parkCRLF散步
我希望字符串成为,摘要 - 我去了parkLF散步
我正在写一个文件作为测试,以查看它是否正常工作。以下是我的代码:
Do While Not txtStream.AtEndOfStream
str = txtStream.ReadLine
edited = Replace(str, Chr(13) & Chr(10), Chr(10))
stream.WriteLine (edited)
Loop
txtStream.Close
代码正在执行而没有错误,但CRLF仍然在新编写的文件中的每一行的末尾...也许我显然遗漏了一些东西,但替换似乎没有找到我的'我正在寻找。对此有任何帮助或建议将不胜感激!
即使确定线的末端是否以CRLF结束,此时也是朝着正确方向迈出的一步。
谢谢。
答案 0 :(得分:3)
您正在读取一行,因此它将删除换行符。你的替换语句无关。然后你写了一行将添加新的行字符。
此外,您没有关闭您提供的代码示例中的输出流。
你会想要这样的东西:
Do While Not txtStream.AtEndOfStream
str = txtStream.ReadLine
stream.Write str & Chr(10)
Loop
txtStream.Close
stream.Close
答案 1 :(得分:3)
WriteLine会自动在字符串
您应该将其替换为@ Mark的建议:stream.Write(edited)
这样做效果更好:
stream.Write(Replace(txtStream.ReadAll, vbCrLf, vbLf))
或
stream.Write(Replace(txtStream.ReadAll, vbCr, vbLf))
有关ReadAll
的详细信息