2016-11-23 17 views
0

ADOを使用して閉じたExcelブックで番号を変更しようとしています。私は2015年にL42によって書かれた以下のコードを発見しました。しかし、この手順は、「1つまたは複数の必須パラメーターに値が指定されていません」というエラーで停止します。何かが足りない場所を見つけることができません!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""" 

重要な感嘆符です!文字列の異なる部分を連結するために感嘆符が必要な場合、なぜこのように必要なのかわかりません。しかし、彼らは順不同であるように見える、最後には1が多すぎる!

+0

感嘆符は違いになりますが引用符それはおそらくもっと違いを生むでしょう。 – CWilson

関連する問題