Excel Sql抛出当Sql以Excel只读模式运行时,参数错误太less

我有一个Excel表,我通过ODBC从Oracle加载数据到“数据”表。 然后应用excel sql来过滤一些数据

注意:我在服务器机器上工作,所以不能粘贴整个代码。 但不pipe我说的是100%正确的。

'Load Data Sheet Sql = Select * from oracleTable . . . set rs1 = commandData.Execute() 'record set 'Then code to store rs1 values in to Data Sheet... . . 'Apply filter in Excel query = select col1,col2,col3 from [Data$A1:IV100] where col1='10' set rs = commandData.Execute() 'record set 

在写模式下打开时返回正确的结果。 但是,当我把工作表放在只读模式为我的用户保护工作表的内容。 它的工作原理是从甲骨文加载数据然后显示错误,当我执行filterExcel的SQL在线。

  set rs = commandData.Execute() ' Error at this line when opened in read only mode 

错误:

[Microsoft] [ODBC Excel驱动程序]参数太less。 预期1

是什么时候,当打开excel的只读只能打开临时目录,所以当执行excel查询时,它正在努力find正确的表来应用sql?

您没有正确使用.Execute()函数。

非行返回的语法:

 commandobject.Execute RecordsAffected, Parameters, Options 

行返回的语法:

 Set recordsetobject = commandobject.Execute (RecordsAffected, Parameters, Options) 

以下是更深入报道的链接: http : //www.devguru.com/technologies/ado/quickref/command_execute.html

我自己遇到了这个错误。 如果你挂了试试这个:

  1. 打开VBA编辑器
  2. 按下Ctrl + G(这将打开即时窗口)
  3. 在将查询分配给一个variables(在本例中为query =后面的行)之后,在代码中立即设置一个断点
  4. 当代码在断点处中断时,在即时窗口中input?query ,然后按Enter键
  5. 这会将SQL语句写入即时窗口
  6. 查看SQL语句是否有错误(缺less引号等)

您也可以尝试将即时窗口中的SQL语句粘贴到数据库中,然后运行查询。 有时你的数据库会抛出一个更具体的错误信息,你可以相应地纠正你的VBA代码。