2016-11-23 10 views
0

ADO를 사용하여 닫힌 Excel 통합 문서에서 번호를 변경하려고합니다. 아래 코드는 L15에 의해 2015 년에 작성된 코드입니다. 그러나 "하나 이상의 필수 매개 변수에 값이 지정되지 않았습니다"라는 오류로 프로 시저가 중지됩니다. 뭔가 빠진 부분을 찾을 수 없습니다!닫힌 Excel 통합 문서에 ADO를 통해 데이터 쓰기/업데이트

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

네, 덕 (Doug), 제가 정확히 원하는 부분입니다. 그러나 나는 SQL과 ADO에 대한 지식이 거의 없기 때문에 왜 도움을 요청 하는가? 보시다시피 몇 줄의 코드가 있으며 맞춤법 검사는 물론 내가 먼저 확인한 것입니다. "rec.Open sqlstr, con, adOpenUnspecified, adLockUnspecified에서 오류가 발생했습니다. Open 문에 ** 필수 ** 매개 변수가 더 이상 없습니다. –

1

오류가 발견되었습니다! sqlstr은 다음과 같이 작성해야합니다.

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

중요 한 느낌표입니다. 느낌표가 문자열의 다른 부분을 연결해야하는 경우 왜 이렇게 필요한지 알 수 없습니다. 그러나 그들은 순서가 어긋나 보입니다. 결국에는 1이 너무 많습니다!

+0

느낌표는 차이를 만들지 만 따옴표를 의미했습니다. 아마도 차이가 더 커질 것입니다. 자신의 질문에 잘 대답 해주세요. – CWilson