尝试从 Excel 宏追加 Access 表时出错

Error when trying to append Access table from Excel macro

提问人:Aaron 提问时间:11/16/2023 更新时间:11/16/2023 访问量:48

问:

我正在尝试让 Excel 工作表根据 2 个单元格的数据在 Access 表中附加一个值。

我们有“部件号”和“多”,我需要做的就是让我的宏将“多”单元格更新为 C3 的值,其中“部件号”与 B3 的值匹配。

这是我到目前为止的代码:

Private Sub WriteButton_Click()

    Dim cn As Object
    Dim rs As Object
    Dim r As Long
    Dim PNum As String
    Dim Multi As String
    Dim strUpdate As String
    
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    PNum = Range("B3")
    Multi = Range("C3")
    strUpdate = "UPDATE tableSAPpart Set Multi=" & Multi & " Where [SAP Part]=" & PNum
    
    cn.Open "Provider=Microsoft.Jet.OLEDB.12.0;" & "Data Source=R:\VAB\Lists+Notes\Test Fault Log_be.accdb"
    rs.Open "tableSAPpart", cn, adOpenKeyset, adLockOptimistic, adCmdTable
    
    cn.Execute (strUpdate)

End Sub

当我到达cn.open时,我收到错误“3706”,“应用程序定义或对象定义的错误”。 我相信这可能是由于指定的提供程序,因为我从 2011 年的一篇文章中复制了这段代码,所以它可能已经过时了。

经过一个小时的谷歌搜索,我在这里找不到任何有效的提供商详细信息。我是否遗漏了其他问题?

Excel VBA MS-Access OLEDB

评论

0赞 HansUp 11/16/2023
在 Access 中打开。然后转到“即时”窗口(Ctrl+g 将带您进入该窗口),粘贴此突出显示的代码,然后按 Enter: 在连接字符串中使用相同的提供程序,---它必须是 ACE 版本,因为 JET 提供程序无法处理 ACCDB 数据库格式。Test Fault Log_be.accdbDebug.Print CurrentProject.Connection.Provider
0赞 CHill60 11/16/2023
尝试cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=R:\VAB\Lists+Notes\Test Fault Log_be.accdb"
0赞 Aaron 11/16/2023
@HansUp 将其粘贴到“即时”窗口中只会给我“编译错误:属性使用无效”
0赞 Aaron 11/16/2023
@CHill60 这消除了 cn.open 行的错误,但现在 rs.open 给出了相同的错误。
1赞 HansUp 11/16/2023
您不需要记录集即可执行 UPDATE。如果丢弃该行会怎样?rs.Open

答: 暂无答案