Ругается на ваш скрипт на строку
If asFields(lf) <> "" Then
Мне задачу немного уточнили-нужно обновить данные в таблице базы ,только там где произошли изменения.
Т.е нужно сравнить данные из базы и данные новые.
Как я понимаю алгоритм решения примерно такой: выгружаю данные из БД на лист, на другом листе какие-то изменения вносит пользователь-заполняет например пустые столбцы, но не полностью. И вот эти изменения нужно внести в БД.
Т.е. перед апдейтом перебрать и сравнить старое(на одном листе) и новое значение (на другом).
Если не равны, делаем update table.
Я выгружаю данные из БД
Sub LoadData()
Dim adCon As Object, adRec As Object
Set adCon = CreateObject("ADODB.Connection")
Set adRec = CreateObject("ADODB.Recordset")
adCon.Provider = "SQLOLEDB"
adCon.ConnectionString = "Server=ххх; Database=ххх; User ID=ххх; Password=ххх"
adCon.Open
adRec.Open "SELECT id, vid, number, Format, square, manager FROM [dbo].ххх", adCon
ActiveSheet.Range("A2").CopyFromRecordset adRec
adRec.Close
adCon.Close
Set adRec = Nothing
Set adCon = Nothing
End Sub
Теперь загвоздка как сравнить в цикле данные одного листа и другого и при отличии произвесьти загрузку