使用VBA/ADO更新Excel表格

4
当我执行这个函数时,出现了运行时错误:“操作必须使用可更新的查询”。是什么原因导致了这个错误?
Function updateConfigFile(strQuery As String)

Dim cnn As ADODB.Connection         
Dim objMyCmd As ADODB.Command

Set cnn = New ADODB.Connection
Set objMyCmd = New ADODB.Command

constConfigFile = "MyWorkbookName"

With cnn

    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & ActiveWorkbook.Path & constConfigFile & ";" & _
        "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
    .Open

End With

strQuery = "update [test$] Set [test]='Hello' WHERE [Test]='h'"

objMyCmd.CommandType = adCmdText
objMyCmd.CommandText = strQuery
objMyCmd.ActiveConnection = cnn

objMyCmd.Execute


Set objMyCmd = Nothing
Set cnn = Nothing


End Function

constConfigFile长什么样?它可能缺少对该文件的写入权限吗? - Olle Sjögren
1个回答

9

从连接字符串中去掉IMEX=1。这对我来说有效。

.ConnectionString = "Data Source=" & ActiveWorkbook.Path & constConfigFile & ";" & _
    "Extended Properties=""Excel 8.0;HDR=Yes;"";"

1
不错的发现! "IMEX=1;"告诉驱动程序始终将“混合”(数字,日期,字符串等)数据列读取为文本。请注意,此选项可能会对Excel工作表写访问产生负面影响。http://www.connectionstrings.com/excel - Olle Sjögren
是的,同样的错误。 IMEX可能的设置为:0、1、2。 (0表示导出模式;1表示导入模式;2表示链接模式(具有完全更新功能)) - antonio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接