我正在尝试使用adodb来查询excel文件。但是有些文件具有非标准的工作表/列名称。
strQry = "select * from [ sheet1$A1:A50]"
我收到错误消息“无效的名称包围”。如何在名称中有额外空格的工作表上运行查询?这些是客户端的原始文件,因此我不想更改名称或任何内容。
另外,我对该列有另一个问题。
strQry2 = "select [column\rA] from [sheet1$E1:E122]"
“\ r”是换行符。我收到错误“没有给出一个或多个必需参数的值。”
关于如何处理这些问题的任何建议?
更新:
Sheet 1
工作正常,但我的表格名为Sheet1
(在sheet1之前的额外空格。
某些列标题在列名称中有换行符/回车符,例如“column”& vbcrlf& “名称”。有没有办法查询这些?
答案 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
我不明白的第二个问题,你能详细说明,我会更新答案吗?