2014-02-18 205 views
3

我想通过SQL查询更新我的Excel工作表数据。我知道你可以通过ADODB.Connection连接到工作表并从ADODB.Recordset中检索(SELECT)数据。但是,对UPDATE查询使用相同的进程会产生'操作必须使用可更新查询'错误。有没有其他方法可以实现这一点?通过SQL更新更新Excel数据

产生该错误的示例代码:

Sub SQLUpdateExample() 
    Dim con As ADODB.Connection 
    Dim rs As ADODB.Recordset 
    Set con = New ADODB.Connection 
    con.Open "Driver={Microsoft Excel Driver (*.xls)};" & _ 
      "DriverId=790;" & _ 
      "Dbq=" & ThisWorkbook.FullName & ";" & _ 
      "DefaultDir=" & ThisWorkbook.FullName 
    Set rs = New ADODB.Recordset 
    Set rs = con.Execute("UPDATE [Sheet1$] SET a = 10 WHERE b > 2") 

    Set rs = Nothing 
    Set con = Nothing 
End Sub 

代码预计将在已保存的.xls工作表,其中表Sheet 1包括与列标题(至少)a和b的表。

+1

找到AFAIK只读Excel文件被打开。您必须将'ReadOnly = False;'添加到您的连接字符串中。也许你会发现有价值的使用[此链接](http://support.microsoft.com/kb/257819/en#RetrieveExcel) – marcw

+0

@marcw - 感谢队友,这很简单,但我无法找到它网络。如果您发表评论作为答案,我会接受它。 – xificurC

回答

4

没想到,这将是所有使它工作...

回答
连接到Excel文件被设置为只读为默认值。
您必须将ReadOnly=False添加到您的连接字符串。

更多信息可以在Microsoft Support

+0

我一直在寻找这么久。谢谢 ! –