Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种方法可以使用与VBA'不同的分隔符一次读取一行文件;s默认值(vbCr/vbCrLf)?_Vba_Excel_Csv - Fatal编程技术网

是否有一种方法可以使用与VBA'不同的分隔符一次读取一行文件;s默认值(vbCr/vbCrLf)?

是否有一种方法可以使用与VBA'不同的分隔符一次读取一行文件;s默认值(vbCr/vbCrLf)?,vba,excel,csv,Vba,Excel,Csv,我正在尝试读取一个多行.csv文件,并将每个令牌放在Excel中自己的单元格中。问题是我无法控制传入的.csv文件 它们在列数方面都是相同的(虽然行数可变,但这很容易解释)。但是,无论出于何种原因,.csv文件的源有时会在标题行的末尾放一个CRLF,有时只放一个LF。同样,我无法控制这一点,因此我必须围绕可变性进行编码 据我所知,VBA行行输入#1,strLine使用CR或CRLF来分隔行,这是有意义的。我试图将整个.csv文件的内容放在一个字符串中,然后使用替换strFileContents,

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

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

据我所知,VBA行
行输入#1,strLine
使用
CR
CRLF
来分隔行,这是有意义的。我试图将整个.csv文件的内容放在一个字符串中,然后使用
替换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

我试图。。。替换strFileContents,vbCr“”,以消除所有CR字符
-良好;现在添加第二步,将所有
LF
替换为
CRLF
。啊,这很有意义。我将立即尝试并更新。感谢您提供的示例,我目前正在代码中实现此方法,并将尽快更新问题。我相信这肯定对我有用。@JonasZebari不要更新问题,改为阅读=)