访问VBA,通过TransferText导入csv文件,逗号为小数分隔符,分号为分隔符

时间:2015-02-03 12:41:51

标签: vba csv import

我在从csv文件导入双号时遇到一些问题。这些文件有分号分隔符,逗号为小数分隔符。

我无法设置导入规格,因为csv中字段的顺序经常会发生变化,如果数据进入错误的字段,它就会变坏。

此外,csv文件必须先写入临时表。不要因为它而讨厌我,但由于我必须处理数据并设置一些信息字段以供以后的数据处理,这是迄今为止最简单,最快速和最安全的方法。

这是问题本身:

使用TransferText时会导入,但当然会将逗号解释为分隔符。不好......

当用逗号替换逗号和用逗号分号时,它可以正常工作。但它会忽略完全停止,因此1.2变为12,1.333变为1333.该字段将为double类型。

我测试了很多东西。除了TransferText我还试过了:

DoCmd.RunSQL ("INSERT INTO Tabelle1 SELECT cdbl(a1) as aa FROM[TEXT;FMT=Delimited;HDR=YES;CharacterSet=437;DATABASE=C:\SPOT].[test.csv]")

但是似乎没有任何效果,即使我在使用TransferText之前创建一个字段类型为DOUBLE的新表时...仍然会忽略小数。

所以,如果您能告诉我如何在第一步中使用或不使用分号和逗号来使用TransferText或如何使用INSERT INTO内容,我会很高兴。

非常感谢!

1 个答案:

答案 0 :(得分:0)

好的,我想我明白了!

区域设置和我的Access使用逗号作为小数分隔符的问题。我也无法通过手动导入创建导入规范,因为它需要定义哪些字段必须导入。

我现在做的是:

通过查询打开包含导入规范的表MSysIMEXSpecs:     从MSysIMEXSpecs中选择*

然后添加一个新行并设置SpecName =" Whatever",DecimalPoint =","和' FieldSeparator` =";"以及其他必须进行的设置。

由于有这种解决方法,是不是有办法更容易做到这一点?