gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:00:44 26 4
gpt4 key购买 nike

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

它们在列数方面都是相同的(尽管行数可变,但这很容易解释)。但是,无论出于何种原因,.csv 文件的源有时 会在标题行的末尾放置一个CRLF,而有时 它只会放置一个低频。同样,我无法控制这一点,因此我必须围绕可变性进行编码。

据我所知,VBA 行 Line Input #1, strLine 使用 CRCRLF 来分隔行,这使得感觉。我试图将整个 .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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com