使用SQL更新Excel工作表

我正在尝试编写一个过程,使用ADODB连接来更新已closures的工作簿中的logging(行)。

我似乎无法弄清楚的是如何在Excel中引用多个表(工作表)和多个字段(列)…

我的SQL语句如下所示:

SQLstr = "UPDATE [Location$] " & vbNewLine & _ "SET [Location$].[City]=[Current Location$].[City] " & vbNewLine & _ "WHERE [Location$].[Name]=[Current Location$].[Name]" cn.Execute SQLstr 

此声明的目标是使用“当前位置”工作表上的“城市”字段(在同一工作簿中)更新“位置”工作表上的“城市”字段。

问题是,当我尝试执行上述语句时,出现运行时错误:

-2147217904:没有给出一个或多个必需参数的值。

这似乎应该是简单的,但我错过了一些东西,我一直没能find任何好的文档,如何处理SQL中的多个工作表/字段/工作簿。

此外,我已经不熟悉SQL,所以我的SQL语法也可能是错误的…但我不确定。

任何帮助将是最受欢迎的。

以防万一我们错过了连接string或其他外设问题上的某些内容,这里就是您希望find的有关该主题大部分方面的信息源: http : //www.xtremevbtalk.com/showthread.php? T = 217783

但是我认为你需要一个JOIN来完成这个工作 – 从我和EXCEL / ADODB一起工作已经有一段时间了,但是你可以放弃一下:

 SQLstr = "UPDATE [Location$] tLoc " & _ "INNER JOIN [Current Location$] tCur ON tCur.Name = tLoc.Name " & _ "SET tLoc.City = tCur.City" 

编辑:跨2个文件的连接

 SQLstr = "UPDATE [Location$] IN 'D\Data\target.xls' tLoc " & _ "INNER JOIN [Current Location$] tCur ON tCur.Name = tLoc.Name " & _ "SET tLoc.City = tCur.City" 

未经testing – 可能不得不交换表别名

我认为你的问题是你缺less一些在sql语句中需要的引号。 例如

  "WHERE [Location$].[Name]=[Current Location$].[Name]" should be something like "WHERE [Location$].[Name]= '" & [Current Location$].[Name] & "'".