Недавно попытался написать код обновления базы данных Access (accdb) данными из Excel макросом, который находится в Excel (примеры во вложенных файлах). Но при выполнении появляется ошибка Run-time error '3704':Операция не допускается, если объект закрыт. Пробовал добавить SET NOCOUNT ON в SQL-запрос, но получил ошибку синтаксиса SQL. Как исправить ошибку 3704? Правильные ли я подключил библиотеки: Microsoft Access 15.0 Object Libray Microsoft ActiveX Data Objects 2.8 Library Microsoft ActiveX Data Objects Recordset 6.0 Library?
Правильный ли выбрал Provider=Microsoft.ACE.OLEDB.12.0? OC - Windows 7 SP 1 64-bit, Office - 2016. Подскажите, пожалуйста.
Вот код:
Код
Option Explicit
Dim EA As Excel.Application
Dim WB As Excel.Workbook
Dim WS As Excel.Worksheet
Dim strValue$, idcode&, strSQL$
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Public Sub transferAccPr()
Set EA = Excel.Application
EA.ScreenUpdating = False
EA.DisplayAlerts = False
EA.StatusBar = False
Set EA = Excel.Application
Set WB = EA.Workbooks("TestExcel.xlsm")
Set WS = WB.Worksheets("Лист1")
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\TestAccessBD.accdb;"
cn.Open
strValue = WS.Cells(2, 2).Value
idcode = WS.Cells(2, 1).Value
'strSQL = "SET NOCOUNT ON UPDATE Products SET [Item] = " & " '" & strValue & "'" & " WHERE Products.[CodeId]= 4"
strSQL = "UPDATE Products SET [Item] = " & " '" & strValue & "'" & " WHERE Products.[CodeId]= 4"
Set rs = cn.Execute(strSQL)
rs.Close
cn.Close
EA.ScreenUpdating = True
EA.DisplayAlerts = True
End Sub