【问题标题】:OpenSchema(adSchemaColumns) for table with hyphens in name名称中带有连字符的表的 OpenSchema(adSchemaColumns)
【发布时间】: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,后者返回一个空记录集。

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

有没有办法处理这个工作表名称?

【问题讨论】:

    标签: excel vba ado recordset


    【解决方案1】:

    用单引号括起来,这样你就可以有效地使用:

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

    作为第二个参数。

    【讨论】:

    • 我试过了,但仍然收到 3251 错误。您认为问题仍然与工作表名称有关吗?
    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2011-08-31
    • 2011-02-16
    • 1970-01-01
    • 2020-11-20
    相关资源
    最近更新 更多