有没有一种方法可以使用不同于VBA默认的分隔符(vbCr / vbCrLf)来一次读取一行文件?

我正在尝试读取多行.csv文件,并将每个令牌放置在Excel中的自己的单元格内。 问题是我无法控制传入的.csv文件。

它们在列数方面都是一样的(尽pipe可变的行数,但这很容易解释)。 但是,无论出于什么原因,.csv文件的源代码有时会在标题行末尾放置一个CRLF有时它只放一个LF 。 再次,我无法控制这一点,所以我必须围绕变化编码。

据我所知,VBA线路Line Input #1, strLine使用CRCRLF来划定线路,这是有道理的。 我试图把整个.csv文件的内容放到一个单独的string中,然后使用Replace strFileContents, vbCr, ""来消除所有的CR字符,但是好像这样也消除了后来出现的所有CRLF ,我在哪里开始

那么,有没有办法让我一次接受一行,使用Line Input #1, strLine而不是LF分隔符? 或者还有另一种方法,我可以操纵一个string的全部内容(即摆脱只有CR而不是CRLF的实例),并从那里Split()string?

这里是我的代码的缩写版本:

 Dim Column, Row As Integer 'used Sheets().Input(Row, Column).Value to insert strings Open strFilePath For Input Access Read As #1 Do Until EOF(1) Line Input #1, strLine strLine = Split(strLine, vbLf)(1) arr = Split(strLine, ",") For Column = 1 to 8 'insert stuff Next Column Row = Row + 1 Loop 

然而,这对我来说并不合适,而且我相信如果是这样的话,我仍然需要处理额外的CR字符。

谢谢。

 asc(vbLF)=10 asc(vbCR)=13 asc(vbCRLF)=13 

所以只能replacevbLF。


 Sub test() Dim strTest As String strTest = "First Line " & vbLf & "Second Line" & vbCrLf & "Third Line" & vbCr & "Fourth Line" strTest = Replace(strTest, vbCrLf, vbCr) '/ Gets rid of double line breaks caused by next replacement strTest = Replace(strTest, vbLf, vbCr) MsgBox strTest End Sub