2016-11-23 2 views
0

Я пытаюсь изменить число в закрытой книге Excel с помощью ADO. Я нашел ниже код, написанный в 2015 году L42. Но процедура останавливается с ошибкой «Нет значения для одного или нескольких требуемых параметров». Я не могу найти, где чего-то не хватает!Запись/обновление данных через ADO в закрытую книгу Excel

Sub ChangeNum() 
Dim con As ADODB.Connection, rec As ADODB.Recordset 
Dim sqlstr As String, datasource As String 
    Set con = New ADODB.Connection: Set rec = New ADODB.Recordset 
    datasource = "D:\DropBox\TraderShare\TraderNum.xlsx" 
Dim sconnect As String 
    sconnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
      "Data Source=" & datasource & ";" & _ 
      "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" 
    con.Open sconnect 
    sqlstr = "UPDATE [Sheet1$] SET [Number] = ""16900"" WHERE [ID] = INum" 
    rec.Open sqlstr, con, adOpenUnspecified, adLockUnspecified 'adLockOptimistic , adOpenStatic, adLockReadOnly 
    con.Close 
    Set rec = Nothing: Set con = Nothing 
End Sub 

Благодарен за любую помощь!

ответ

0

Обычная причина для этой ошибки - это недостающее или ошибочное значение. Я бы рассмотрел инструкцию SQL и посмотрел, что выкл

+0

Да, Дуг, это именно то, о чем я прошу. Но у меня очень мало знаний в SQL и ADO, причина, почему я прошу о помощи! Как вы видите, есть несколько строк кода, и написание, конечно же, я проверил в первую очередь. Ошибка заносится в «rec.Open sqlstr, con, adOpenUnspecified, adLockUnspecified. Я не могу найти больше ** необходимых ** параметров для оператора Open. –

1

Я нашел ошибку! Sqlstr следует написать:

sqlstr = "UPDATE [Sheet1$] SET [Number] = ""16900"" WHERE [ID] = ""INum""" 

Это знаменательные восклицания! Я не знаю, почему это требуется таким образом, если восклицательные знаки необходимы для конкатенации различных частей строки. Но они выглядят не в порядке, в конце концов, слишком много!

+0

Восклицательные знаки будут иметь значение ... но вы имели в виду кавычки , что, вероятно, имеет большее значение. Хорошая работа, отвечающая на ваш собственный вопрос. – CWilson

Смежные вопросы