我想通过SQL查询更新Excel工作表的数据。我知道您可以通过ADODB.Connection“连接”到工作表,并在ADODB.Recordset中从中检索(SELECT)数据。但是,对UPDATE查询使用相同的过程会产生“操作必须使用可更新查询”错误。还有其他方法可以达到这个目的吗?
产生错误的示例代码:
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工作表中,其中Sheet1包含一个包含列标题(至少)a和b的表。
答案 0 :(得分:5)
没想到会让它发挥作用......
<强>答案强>
默认情况下,Excel文件的连接设置为ReadOnly
您必须将ReadOnly=False
添加到连接字符串。