使用VBA导入分号分隔的CSV文件

时间:2016-10-06 07:50:59

标签: vba excel-vba csv excel

我有一个问题,用VBA代码用Excel打开.csv文件。我的数据组织如下:

Workbooks.OpenText filename:=strPath & "thisFile.csv", DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False

当我从Windows Explorator中通过Excel手动打开此文件时,一切看起来都很好,所有值都正确分隔。它看起来像是:

split

当我尝试通过VBA打开它时,使用

const

数据用逗号分隔,所以看起来像这样:

Example1

当我使用OpenText函数时会弹出相同的错误结果

const char prog[] = {'\xc3'}; // x86 ret instruction

int main()
{
    typedef double (*dfunc)();

    dfunc d = (dfunc)(&prog[0]);
    (*d)();
    return 0;
}

当我尝试使用Example2的解决方案时。有什么想法吗?

1 个答案:

答案 0 :(得分:7)

我希望您使用的是比Excel 2000更新的东西。这是我在具有德语格式设置的计算机上使用Excel 2016时的体验:显然是分隔符的Workbooks.Open选项({{ 1}}和Format)仅在您打开Delimiter文件时应用。如果.txt设置为Local(默认值),则将使用逗号作为分隔符,使用VBA语言设置打开文件。设置False会阻止这样做

Local:=True

应该适合你。如果您将文件重命名为Workbooks.Open FileName:=strPath & "thisFile.csv", Local:=True ,则可以使用.txtFormat选项:

Delimiter

有关详细信息,请参阅MSDN 但是这会弄乱你的十进制数,请参阅我的编辑。

编辑:我误读了文档。 Workbooks.Open FileName:=strPath & "thisFile.txt", Format:=4 'Format = 4 is semicolon delimited Workbooks.Open FileName:=strPath & "thisFile.txt", Format:=6, Delimiter:=";" 'Format = 6 is custom delimited Format选项实际上仅在使用Delimiter文件时应用,而不是.txt(即使.csv方法的行为也是如此)。

如果您想确保它在具有不同格式设置的计算机上打开,我现在唯一的解决方案是将其重命名为.OpenText并使用

.txt