【发布时间】:2019-04-29 01:54:16
【问题描述】:
我正在使用 ADO 读取一些 Excel 数据,并且想要获取一些 OpenSchema 列值。
我的连接字符串(成功打开连接)是:
Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:[我的 路径].xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1;";
我可以愉快地打开 AdSchemaTables 记录集并获取表名:
Set tablesRs = conn.OpenSchema(AD_SCHEMA_TABLES)
Do While Not tablesRs.EOF
tbl = tablesRs.Fields("TABLE_NAME")
/../
Loop
而对于像Sheet1$这样名字的表,我也可以愉快地读取我的列数据:
Set colsRs = conn.OpenSchema(AD_SCHEMA_COLUMNS, Array(Empty, Empty, tbl))
我的问题是其中一张纸的名称包含连字符,例如“16-11-2018”,这似乎会引发 3251 错误。我尝试过使用和不使用引号“'16-11-2018'”和方括号“[16-11-2018]”,但前者抛出 3251,后者返回一个空记录集。
我知道数据很好,因为如果我将工作表复制到具有通用工作表名称的不同工作簿,我的代码就可以正常工作。所以我假设我的问题与该工作表名称有关。
有没有办法处理这个工作表名称?
【问题讨论】: