与csv的ado连接中名称错误的包围无效

时间:2015-09-15 13:07:20

标签: sql excel vba ado

我正在尝试通过excel / vba中的ADO从csv文件中进行选择。我有一个连接到csv设置,并试图通过记录集(rs)进行选择。

我的csv文件名为“B1-D D_20150915_12345_ [2015年8月31日] .csv”(由其他系统生成的名称,我无法更改)

我的select / rs.open看起来像这样:

 sql = "select * from '" & strFileName & "' where [Company Code] = 'GBHQ'"
 sql = sql & " and  [Item Type] = 'BAL'"

 Call rs.Open(sql, cn, adOpenKeyset)

这给出了以下sql:

 select * from B1-D D_20150915_12345_[31-Aug-2015].csv where [Company Code] = 'GBHQ' and  [Item Type] = 'BAL'

当我运行时,我收到一条错误消息:

 Unable to import Data
 Invalid bracketing of name "B1-D D_20150915_12345_[31-Aug-2015].csv"

错误肯定与文件名相关联,就好像我将其更改为'text.csv'之类的东西,然后rs.open正常工作。

我可以看到该文件名中存在各种令人反感的字符 - 如果没有将文件复制/重命名为其他我不想做的文件,我无法更改它们,因为它相当大。

我希望这只是一些我没有的非常简单的知识 - 无论如何我能逃脱文件名吗?或通过其他方式获得它?

1 个答案:

答案 0 :(得分:0)

尝试在工作表名称周围加上双引号,因为它有一个空格

sql = "select * from '" & """" & strFileName & """" & "' where [Company Code] = 'GBHQ'"
sql = sql & " and  [Item Type] = 'BAL'"

Call rs.Open(sql, cn, adOpenKeyset)

或者你可能需要它周围的括号。

sql = "select * from '[" & strFileName & "]' where [Company Code] = 'GBHQ'"
sql = sql & " and  [Item Type] = 'BAL'"

Call rs.Open(sql, cn, adOpenKeyset)