名称为连字符“

时间:2018-11-27 10:35:51

标签: excel vba ado recordset

我正在使用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,而后者返回空记录集。

我知道数据很好,因为如果将工作表复制到具有通用工作表名称的其他工作簿中,我的代码就可以正常工作。所以我假设我的问题与工作表名称有关。

有没有处理此工作表名称的方法?

1 个答案:

答案 0 :(得分:0)

将其用单引号引起来,因此您可以有效地使用:

Array(Empty, Empty, "'16-11-2018$'")

作为第二个参数。