使用Jet/ACE SQL引擎,可以用方括号或反勾号转义标识符中的特殊字符。因此,句点不应该是问题,然后可以使用完整的工作表名和
A1
在SQL查询中使用范围表示法,而不是命名范围。
但是,您的特定SQL错误是由于使用
IN
在一个
INNER JOIN
条款。避免
在
它最好用于一个表,并使用句点限定符语法,在内联调用中将工作簿路径作为参数传递,其中
供应商
不需要:
FROM [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Workbook].[Worksheet$] AS w
总的来说,考虑以下不带命名范围的调整,这些调整很难调试。下面显示如何使用括号或反勾号处理句点,以及如何使用
A1号
符号范围。
strSQL = "SELECT s1.[reference]" & _
" FROM [S.h.e.e.t1$A4:Z100] s1" & _
" INNER JOIN [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Workbook].`S.h.e.e.t.2$A9:Z100` s2
ON s1.[reference] = s2.[reference]" & _
" WHERE s1.reference LIKE '1%'"
rs.Open strSQL, con