2012-08-17 37 views
3
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 

    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 

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

objMyCmd.Execute 


Set objMyCmd = Nothing 
Set cnn = Nothing 


End Function 

和输入参数的excel工作表具有值 - strQuery = “更新[测试$]将[测试] = '你好' WHERE [测试] = 'H'”更新使用VBA/ADO

当我执行这个函数时,我得到一个运行时错误,“操作必须使用可更新的查询”。

请指教。谢谢

+0

什么是strQuery?什么是constConfigFile? – Fionnuala 2012-08-17 09:37:59

+0

strQuery =“update [test $] Set [test] ='Hello'WHERE [Test] ='h'” – vkrams 2012-08-17 09:40:28

+0

constConfigFile是一个具有已关闭工作簿名称的常量。 – vkrams 2012-08-17 09:41:31

回答

8

摆脱连接字符串中的IMEX = 1。这对我行得通。

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

感谢Remou ..现在工作! – vkrams 2012-08-17 10:03:27

+0

好的! _“IMEX = 1;告诉驱动程序总是以”文本“的形式读取”混合“(数字,日期,字符串等)数据列,注意这个选项可能会影响excel表写入访问的负面情况。”_ http://www.connectionstrings。 com/excel – 2012-08-17 10:28:42

+0

是的,同样的错误。 IMEX的可能设置为:0,1,2。 (0是导出模式; 1是导入模式; 2是链接模式(完全更新功能)) – antonio 2017-07-10 05:22:14