Пробую так
- Код: Выделить всё
Public Sub DeleteRecord()
Dim pConn As New ADODB.Connection
Dim pCom As New ADODB.Command
pConn.Mode = adModeShareDenyNone
pConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\path\name.xlsm;Extended Properties=""Excel 12.0;HDR=YES"";"
pCom.ActiveConnection = pConn
pCom.CommandType = adCmdText
pCom.CommandText = "Delete * From [Sheet$] Where [ID]=1"
pCom.Execute
pConn.Close
и так
- Код: Выделить всё
Public Sub DeleteRecord2()
Dim pConn As New ADODB.Connection
Dim pRSet As New ADODB.RecordSet
pConn.Mode = adModeShareDenyNone
pConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\path\name.xlsm;Extended Properties=""Excel 12.0;HDR=YES"";"
pRSet.CursorLocation = adUseClient: pRSet.CursorType = adOpenStatic
pRSet.LockType = adLockPessimistic
pRSet.Open "Select * From [Sheet$] Where [ID]=0", pConn
If pRSet.RecordCount > 0 Then
pRSet.MoveFirst
pRSet.Delete adAffectCurrent
pRSet.Update
End If
pRSet.Close: pConn.Close
End Sub
В обоих случаях получаю сообщение об ошибке "Удаление данных в присоединённой (или связанной) таблице не поддерживается драйвером ISAM."
Вставка строк и обновление работают как положено. Пробовал для Provider=Microsoft.Jet.OLEDB.4.0, сохранив файл в формате 2003, получаю то же самое.
Верно ли утверждение, что в Excel нельзя удалить строки таблицы используя ADO?