VBA:Microsoft Access数据库引擎找不到对象(SQL查询工作表)
我正在尝试在Excel电子表格中针对表范围执行SQL select语句时,在rs.Open strSQL, cn
行上收到以下错误消息:
Microsoft Access数据库引擎找不到对象'Sheet1 $ A1:NC3'。 确保对象存在,并且正确拼写其名称和path名称。 如果“Sheet1 $ A1:NC3”不是本地对象,请检查您的networking连接或联系服务器pipe理员
对于类似的问题,我已经通过各种堆栈溢出侧栏build议,让谷歌有一个运行,但我还没有解决这个问题。
-
该对象是本地 – 检查
-
工作簿是当前打开的工作簿,将其保存到桌面 – 检查
-
networking连接正常 – 检查
意见
-
将SQLstring设置为
"Select * from [Sheet1$];"
工作正常。 -
扩展,通过添加范围参考,错误回来,即
"Select * from [Sheet1$A1:NC3];"
不起作用。 -
正如在评论中指出的,直到第四栏即
[Sheet1$A1:IV3]
是可以的; 列IW在前,错误信息又回来了。
注意 : Debug.Print
确认
-
ListObjects("Table1").Range.Address
as$A$1:$NC$3
-
rngAddress
是[Sheet1$A1:NC3];
任何人都可以请发现我做错了吗? 或者build议一个解决方法,所以我仍然可以使用这个范围(最好不要select整个工作表)
以下是完整的代码:
Option Explicit Public Sub TestSQL() 'Tools > references > Microsoft ActiveX Object Library Dim wb As Workbook Dim wsSource As Worksheet Dim strFile As String Dim strCon As String Dim strSQL As String Set wb = ThisWorkbook Set wsSource = wb.Worksheets("Sheet1") Dim cn As ADODB.Connection Dim rs As ADODB.Recordset strFile = ThisWorkbook.FullName strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _ & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Open strCon Dim rngAddress As String rngAddress = "[" & wsSource.Name & "$" & Replace(wsSource.ListObjects("Table1").Range.Address, "$", "") & "];" strSQL = "SELECT * FROM " & rngAddress rs.Open strSQL, cn End Sub
环境:Windows 8,Excel 2016 64位。
- 由于驱动程序认为我使用整数/数字并显示空值而不是文本,所以无法使用ADO从CSV读取数据
- 通过ADODB访问Excel工作簿 – 同时有多个用户
- VBA Excel SQL查询更新超过255个字符的字段
- Microsoft.ACE.OLEDB.12.0当前logging集不支持尝试更新访问时收到的更新错误
- ADODB Excel / Access SQL插入舍去小数:任何想法为什么或如何解决?
- 如果工作表的第一行没有列名称,如何使用ADODB连接从Excel中检索数据?
- 如何select使用ADODB移动数据的Excel VBAmacros的dynamic工作表名称?
- ADODB.Connection与Excel访问数据库性能改进
- 我的oledb连接在一个工作簿上工作,但不在另一个上