我正在使用ADO读取一些Excel数据,并希望获取一些OpenSchema列值。
我的连接字符串(成功打开连接)是:
Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:[我 path] .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,而后者返回空记录集。
我知道数据很好,因为如果将工作表复制到具有通用工作表名称的其他工作簿中,我的代码就可以正常工作。所以我假设我的问题与工作表名称有关。
有没有处理此工作表名称的方法?
答案 0 :(得分:0)
将其用单引号引起来,因此您可以有效地使用:
Array(Empty, Empty, "'16-11-2018$'")
作为第二个参数。