我正在尝试读取一个多行 .csv 文件,并将每个标记放在 Excel 中它自己的单元格中。问题是我无法控制传入的 .csv 文件。
它们在列数方面都是相同的(尽管行数可变,但这很容易解释)。但是,无论出于何种原因,.csv 文件的源有时 会在标题行的末尾放置一个CRLF
,而有时 它只会放置一个低频
。同样,我无法控制这一点,因此我必须围绕可变性进行编码。
据我所知,VBA 行 Line Input #1, strLine
使用 CR
或 CRLF
来分隔行,这使得感觉。我试图将整个 .csv 文件的内容放入一个字符串中,然后使用 Replace strFileContents, vbCr, ""
消除所有 CR
字符,但看起来好像这也摆脱了所有后来出现的 CRLF
,让我回到开始的地方。
那么,有没有办法让我使用 Line Input #1, strLine
而不是 LF
分隔符一次接受一行?还是有另一种方法可以操纵字符串的全部内容(即仅删除 CR
而不是 CRLF
的实例)和 Split()
那里的字符串?
这是我的代码的简化版本:
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
所以只替换 vbLF。
例子
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
关于vba - 有没有一种方法可以使用与 VBA 的默认分隔符 (vbCr/vbCrLf) 不同的分隔符一次一行地读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47273217/