使用SQL更新Excel工作表

时间:2014-08-04 18:24:17

标签: sql excel vba excel-vba excel-2010

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

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

我的SQL语句如下所示:

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

cn.Execute SQLstr

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

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

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

看起来这应该很简单,但我遗漏了一些东西,而且我还没有找到关于如何在SQL中处理多个工作表/字段/工作簿的任何好文档。

另外,我对SQL的熟练程度不高,所以我的SQL语法也可能出错......但我不确定。

欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

万一我们错过了关于连接字符串或其他外围问题的内容,以下是您希望找到的关于该主题大多数方面的良好信息来源: http://www.xtremevbtalk.com/showthread.php?t=217783

但是我认为你需要加入这项工作 - 自从我使用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"

未经测试 - 可能必须交换表别名

答案 1 :(得分:0)

我认为你的问题是你错过了一些引用''这是sql语句中所必需的。例如

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