打开分号分隔的CSV文件

Ler*_*rve 5 csv excel-vba excel-2000

如何在Excel 2000中使用VBA打开以分号分隔的CSV文件?

样本数据

An ID;TEST20090222
A Name;Firstname Surname
A Date;11.05.2000

Country:;SomeCountryName
Currency;EUR
CostA;
CostB;
CostC;
Part1;10;20;30
Part2;;;;
Part3;34;56;87
Run Code Online (Sandbox Code Playgroud)

在带有VBA 6.5.1025的Excel 2003 11.8231.8221 SP3中,我可以使用以下VBA代码打开以分号分隔的文件:

Workbooks.OpenText filename:=myFilename, _
    DataType:=xlDelimited, Semicolon:=True, Local:=True
Run Code Online (Sandbox Code Playgroud)

但是,当在带有VBA 6.5.1025的Excel 2000 9.0.8961 SP1中运行相同的代码时,我收到以下错误:

编译错误:找不到命名参数

那是 - 我认为 - 因为Excel 2000不知道命名参数"Local".

因此,我删除了"Local:= True"部分.但问题是,CSV文件中的整行被写入一个单元格而不是分成单独的分号分隔部分.

我在互联网上搜索了一个解决方案,但没有发现任何有用和简洁的内容.

有任何想法吗?

[更新17.02.2009]

我尝试了用户lc和宏录制器的建议.然而,结果令人困惑.

当我使用菜单File-> Open ...打开CSV文件,然后选择CSV文件时,正确分析分号分隔数据.录制的代码非常简单:

Workbooks.Open filename:= _
               "D:\testdata\Example 01 CSV\input.csv"
Run Code Online (Sandbox Code Playgroud)

但是,当我在宏中使用该VBA代码时,每一行最终会再次出现在一个单元格中.

根据用户barrowc的建议,我还将Windows"区域和语言选项"设置从"德语(瑞士)"更改为"英语(美国)".即使重启Excel后,没有任何改变,同样的问题.

我想知道为什么它正在使用用户Remou的系统.您有哪些区域和语言设置?

Ler*_*rve 4

[2009 年 2 月 22 日更新]

与此同时,我通过自己编写导入函数而不是使用 Workbooks.OpenText 解决了该问题。

我只是将 CSV 文件作为文本文件打开,逐行读取,将每一行拆分为以分号分隔的元素,并将每个元素写入一个单元格中。

Sub ImportCSVFile(filepath As String)
    Dim line As String
    Dim arrayOfElements
    Dim linenumber As Integer
    Dim elementnumber As Integer
    Dim element As Variant

    linenumber = 0
    elementnumber = 0

    Open filepath For Input As #1 ' Open file for input
        Do While Not EOF(1) ' Loop until end of file
            linenumber = linenumber + 1
            Line Input #1, line
            arrayOfElements = Split(line, ";")

            elementnumber = 0
            For Each element In arrayOfElements
                elementnumber = elementnumber + 1
                Cells(linenumber, elementnumber).Value = element
            Next
        Loop
    Close #1 ' Close file.
End Sub
Run Code Online (Sandbox Code Playgroud)

从 Shasur 获得灵感:http://vbadud.blogspot.com/2007/06/vba-read-text-files-with-leading.html

我仍然不知道为什么它Workbooks.OpenText在我的系统上不起作用,尽管它似乎在用户 Remou的系统上工作。我想这可能与操作系统语言(英语)以及区域和语言设置(德语、瑞士)有关,但我不确定。

无论如何,解决方法对我有用。谢谢大家的建议和帮助!