(2)如何在ADO名称中填写表格

所以我使用ADO从多个工作簿中导入数据的文件夹中有几个标签。 除了名为“MAT。(2)”的选项卡之外,我已经能够设置所有的选项卡来处理这个选项卡。 当我使用下面的代码,它给了我一个错误,说“无效包围”。 由于它是受控文档,我无法更改选项卡的名称。 有没有一种方法,我可以把标签名称的格式,将被接受,或者可能我可以解决“Sheet3”(我已经尝试过,并抛出一个错误,说它找不到对象)的方式。

Set rs = dbConnection.Execute("SELECT * FROM [" & SourceSheet$ & "$" & SourceRange & "]") Set TargetCell = Range(TargetRange).Cells(1, 1) TargetCell.CopyFromRecordset rs 

编辑 –

我正在使用的连接string如下所示:

  dbConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & SourceFile & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=No"";" 

您可以尝试使用单引号或双引号来转义名称,而不是括号。 你使用什么供应商来连接? 我有一个连接到SQL Server数据库与一个连字符名称的问题。 我尝试了所有我能想到的方法来逃避这个名字,但是它不起作用。 我最终通过从ODBC连接切换到OLE DB连接来解决问题。 也许尝试ACE OLEDB 12.0提供程序,看看你能否以这种方式工作。 OLE DB excel connstrings

编辑:
您是否尝试在反引号中转义数据库名称? 我在想. 是这个问题,因为在大多数基于SQL的RDBMS中,这个字符通常是非法的数据库或表名。 所以试试像这样:

 Set rs = dbConnection.Execute("SELECT * FROM `"& SourceSheet$ & "$" & SourceRange &`" 

或者可能

 Set rs = dbConnection.Execute("SELECT * FROM [`" & SourceSheet$ & "$" & SourceRange & "`]" 

我不确定这两种方法是否可行,但值得一试。 如果可以的话,你可能要删除. 从任何工作表名称,因为它可能会导致一些有趣的问题。