2016-11-23 81 views
0

我在使用ADO嘗試更改已關閉的Excel工作簿中的數字。我發現下面的代碼是由L42在2015年編寫的。但程序會停止,並顯示錯誤「沒有給出一個或多個必需參數的值」。我找不到丟失的東西!通過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

相關問題