使用ADODB从外部应用程序更新Excel工作表



我发现了很多关于这个问题的帖子,但到目前为止还没有解决方案。

我想从外部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

不知怎么的,这个问题似乎已经消失了。我尝试了一些不同的东西(不同的电子表格),成败参半,然后重新启动应用程序-现在它工作了。

没有任何代码更改。

相关内容

  • 没有找到相关文章