我发现了很多关于这个问题的帖子,但到目前为止还没有解决方案。
我想从外部VBA应用程序读取和写入数据从/到Excel工作表-到目前为止,它读取OK,但我得到一个错误,而试图写入值到ADODB记录集。
代码如下:
Sub UpdateFromExcel()
'https://stackoverflow.com/questions/15620080/reading-data-using-oledb-from-opened-excel-file
Dim oConn As New ADODB.Connection
Dim oRS As New ADODB.Recordset
Dim sPath
Dim sSQL As String
sSQL = "SELECT * FROM [Sheet1$A1:N10000]"
sPath = frmExcelSync.txtFilePath
oConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & sPath & "';" & _
"Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';"
oRS.Open sSQL, oConn, adOpenDynamic, adLockOptimistic
Do While Not oRS.EOF
'ITERATE THROUGH EACH ROW HERE
'ADD CODE ABOVE
'****GET AN ERROR HERE:****
oRS.Update "Occurrence Name", "Test"
oRS.MoveNext
Loop
oRS.Close
oConn.Close
End Sub
错误是
"不能更新。数据库或对象是只读的。
我试过不同的锁和光标类型,我试过编辑字段,然后使用.update
方法,但到目前为止没有任何工作。
有什么建议吗?
您的update语句不正确。我相信您想要更新"发生名称"值为"Test">
你应该写的是。
Do While Not oRS.EOF
oRS![Occurrence Name].value = "Test"
oRS.MoveNext
Loop
oRS.Update
不知怎么的,这个问题似乎已经消失了。我尝试了一些不同的东西(不同的电子表格),成败参半,然后重新启动应用程序-现在它工作了。
没有任何代码更改。