在VBA中使用Replace替换回车
我对VBA比较陌生,想要完成一些非常简单的事情,但我不明白为什么这不起作用。我正在读取文件中的行,如果用notepad++打开,每行末尾都有一个CRLF。我只想删除CR。在notepad++中,我可以做一个replaceall,用LF替换CRLF,一切都很好。但是,我现在在VBA中进行的测试并没有正确地执行此操作。下面是我在Notepad++中处理的字符串示例: 我去公园散步 我想让绳子变成,小结——我去公园散步了 我正在写一个文件作为测试,以查看它是否工作。下面是我的代码:在VBA中使用Replace替换回车,vba,excel,Vba,Excel,我对VBA比较陌生,想要完成一些非常简单的事情,但我不明白为什么这不起作用。我正在读取文件中的行,如果用notepad++打开,每行末尾都有一个CRLF。我只想删除CR。在notepad++中,我可以做一个replaceall,用LF替换CRLF,一切都很好。但是,我现在在VBA中进行的测试并没有正确地执行此操作。下面是我在Notepad++中处理的字符串示例: 我去公园散步 我想让绳子变成,小结——我去公园散步了 我正在写一个文件作为测试,以查看它是否工作。下面是我的代码: Do Wh
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结束,在这一点上也是朝着正确方向迈出的一步
谢谢。您正在阅读一行,因此它将删除新行字符。您的replace语句与此无关。然后您将写一行,该行将添加新行字符 此外,在您提供的代码示例中,您没有关闭输出流 你会想要这样的东西:
Do While Not txtStream.AtEndOfStream
str = txtStream.ReadLine
stream.Write str & Chr(10)
Loop
txtStream.Close
stream.Close
您正在读取一行,因此它将删除新行字符。您的replace语句与此无关。然后您将写一行,该行将添加新行字符 此外,在您提供的代码示例中,您没有关闭输出流 你会想要这样的东西:
Do While Not txtStream.AtEndOfStream
str = txtStream.ReadLine
stream.Write str & Chr(10)
Loop
txtStream.Close
stream.Close
- WriteLine会自动在字符串后放置一个行尾
- 您应该用@Mark的建议替换它:
stream.Write(edited)
- 这样做的效果更好:
或stream.Write(替换(txtStream.ReadAll、vbCrLf、vbLf))
stream.Write(替换(txtStream.ReadAll、vbCr、vbLf))
- WriteLine会自动在字符串后放置一个行尾
- 您应该用@Mark的建议替换它:
stream.Write(edited)
- 这样做的效果更好:
或stream.Write(替换(txtStream.ReadAll、vbCrLf、vbLf))
stream.Write(替换(txtStream.ReadAll、vbCr、vbLf))
有关的详细信息非常感谢保罗。使用vbCr和vbCrLf常量有效!非常感谢你,保罗。使用vbCr和vbCrLf常量有效!