Excel ADODB-为什么我的记录集是只读的?

Excel ADODB-为什么我的记录集是只读的?,excel,vba,adodb,recordset,Excel,Vba,Adodb,Recordset,在Excel中,我使用ADODB连接构建记录集,从工作表自己的工作簿中获取数据,如下所示: Public Sub test() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim strSQL As String Dim k As Variant cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Da

在Excel中,我使用ADODB连接构建记录集,从工作表自己的工作簿中获取数据,如下所示:

Public Sub test()
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strSQL As String
    Dim k As Variant

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
       "Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & _
        "Extended Properties=""Excel 12.0;HDR=No;IMEX=1;Readonly=False"";"

    strSQL = "SELECT F1 FROM [Workbench$];"

    rst.Open strSQL, cnn, adOpenStatic, adLockOptimistic
    rst.MoveFirst

    While Not rst.EOF
        rst("F1") = "NewValue"
        rst.Update
        rst.MoveNext
    Wend

End Sub
但是,在运行代码时发生错误:

运行时错误'-2147217911(80040e09)':
无法更新。数据库或对象是只读的

我已经检查了我打开的工作簿的权限,它还可以(每个人都可以完全控制访问权限)

我做错了什么

rst.Open strSQL, cnn, adOpenStatic, adLockOptimistic
取代

rst.Open strSQL, cnn, 1, 3

我通过使用IMEX=0解决了我的问题

尝试用adOpenDynamic替换adOpenStatic。这在尝试根据文章添加/更新列表项时适用于SharePoint ADO连接。