使用VBA中的ADODB查询带空格的工作表名称

时间:2014-07-03 13:53:22

标签: excel vba adodb

我正在尝试使用adodb来查询excel文件。但是有些文件具有非标准的工作表/列名称。

strQry = "select * from [ sheet1$A1:A50]"

我收到错误消息“无效的名称包围”。如何在名称中有额外空格的工作表上运行查询?这些是客户端的原始文件,因此我不想更改名称或任何内容。

另外,我对该列有另一个问题。

strQry2 = "select [column\rA] from [sheet1$E1:E122]"

“\ r”是换行符。我收到错误“没有给出一个或多个必需参数的值。”

关于如何处理这些问题的任何建议?

更新:

Sheet 1工作正常,但我的表格名为Sheet1在sheet1之前的额外空格

某些列标题在列名称中有换行符/回车符,例如“column”& vbcrlf& “名称”。有没有办法查询这些?

1 个答案:

答案 0 :(得分:2)

如果Sheet 1在Sheet和1之间有空格

,那么空间就行了

"select * from [Sheet 1$A1:A50]"

如果sheet 1 aka前面有空格。 Chr(32) & Sheet 1然后无法使用[] syntax

从该工作表中选择任何内容

然而,如果您不想更改电子表格的原始名称,则可以创建临时 命名范围要从中提取数据的范围。

例如:

' add a temporary name
ThisWorkbook.Names.Add name:="tmp", RefersTo:=Sheets(" Sheet 1").Range("A1:C4")

' create your sql including the named range
sql = "SELECT * FROM tmp"

' open recordset
rs.Open sql, cn, adOpenUnspecified, adLockUnspecified

' remove the temporary name
ThisWorkbook.Names.Item("tmp").Delete

' copy rs to spreadsheet
ActiveSheet.Range("F2").CopyFromRecordset rs

我不明白的第二个问题,你能详细说明,我会更新答案吗?