在访问VBA中打开文件时找不到线断裂



我有一个程序,该程序将带有" n"字符的文本文件写入。我将其写入一个.csv文件,以便我可以获取这些信息并将其导入访问数据库。我遇到的问题是Microsoft Access VBA和Notepad并未识别文件中的线路断路。WordPad,访问内置的导入和excel do 识别线路断裂。如果我在Excel或WordPad中打开.CSV文件,请不进行更改,然后将文件保存为.csv文件,然后将其正确显示。

在记事本中打开的文件

在Excel中打开的文件

访问中导入的文件

我有一个VBA脚本可以从文件导入数据,因为将数据反复添加到主表中。我希望它从.CSV文件中获取每行,如果ID尚未存在或更新现有行(如果有(,则将其插入为新行。这是对文件进行测试和工作的,其中它们公然在不同的行上(在记事本以不同的行显示(,但它只是我程序生成的文件(使用 n作为新行(。

另一个程序构建在C#...所以,我想我的问题是:在存在换行符时,在C#中使用更好的换行字符或序列,以使其更普遍地认可?p>对于后代,这是我的VBA脚本正在使用的代码,该代码正在读取文件为一行并缺少线路断裂:

'Now read the file
Open csvLoc For Input As #1
Do While Not EOF(1)
    Line Input #1, csvLine
    Debug.Print csvLine
    lineArray = Split(csvLine, ",")
    <-- Code handling the now split line array -->
Loop
Close #1

newline控制字符:

  • n = " line feed" (lf(= ascii代码 10 = vba常数: vbLf

  • r = "马车返回" (cr(= ascii code 13 = vba常数: vbCr

或Windows更喜欢两者的组合:

  • rn = " CR LF" = ASCII代码13 10 = VBA Constant: vbCrLf

由于您有现有的LF,因此有多种简单的方法将其更改为CRLF s。我想不出任何方法是一个问题。

最好的计划是更改创建文件的源应用程序,因此请使用两个字符而不是一个字符。

如果您的主要关注点是您正在使用VBA导入的数据,则可以对代码进行少量更改,以替换字符:

Open csvLoc For Input As #1
Do While Not EOF(1)
    Line Input #1, csvLine
    csvLine = Replace(csvLine, vbLf, vbCrLf)
    Debug.Print csvLine
    lineArray = Split(csvLine, ",")
    <-- Code handling the now split line array -->
Loop
Close #1

更多信息:

  • wikipedia:在不同字符的编码规范中的newline表示

  • msdn:替换功能(VBA(

  • msdn:其他常数

  • 堆栈溢出: CR LF,LF和CR线路断路类型之间的区别?

  • wikipedia: ascii

  • newline字符的历史

您没有提及具有CSV文件的访问链接。

如果内置的访问'内置会识别生产线的本地断裂 - 那么依赖链接方法将比基于VBA的导入更容易。

最新更新