我正在尝试通过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正常工作。
我可以看到该文件名中存在各种令人反感的字符 - 如果没有将文件复制/重命名为其他我不想做的文件,我无法更改它们,因为它相当大。
我希望这只是一些我没有的非常简单的知识 - 无论如何我能逃脱文件名吗?或通过其他方式获得它?
答案 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)