我有一个问题,用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手动打开此文件时,一切看起来都很好,所有值都正确分隔。它看起来像是:
当我尝试通过VBA打开它时,使用
const
数据用逗号分隔,所以看起来像这样:
当我使用OpenText函数时会弹出相同的错误结果
const char prog[] = {'\xc3'}; // x86 ret instruction
int main()
{
typedef double (*dfunc)();
dfunc d = (dfunc)(&prog[0]);
(*d)();
return 0;
}
答案 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
,则可以使用.txt
和Format
选项:
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