ADODB Excel SQL语句写入下一个可用行

我目前能够在我的VBScript中使用ADODB连接来读取和更新Excel电子表格中的数据。 这工作顺利,我知道如何操纵不同的列和不同的行与我想要的。

我的问题是,我现在需要input一行新的数据。 它如何知道在哪里放置它? 我一直在使用的代码总是给出一些参考点:例如:

rs.Open "Update [links$] Set [F" & arrLocals(i) & "]= '" & arrChangeData(i) & "' Where [F2] = '" & arrFormID(j) & "'", cn, adOpenStatic, adLockOptimistic 

所以根据这一点,只要你正在使用arrFormID(j)F2列匹配工作 ,就意味着要在这一行做些什么。 但是,如果你想要一个新的行,我不知道要匹配什么?

您需要使用insert语句。 像insertdeleteupdate SQL语句通常不被视为“行返回”语句,因此使用Connection对象本身执行操作而不是Recordset通常更有意义。 例如:

 Dim cn Set cn = CreateObject("ADODB.Connection") cn.Open "<your Excel connection string>" cn.Execute "update [links$] set ... where ..." cn.Execute "insert into [links$] values (...)" cn.Execute "delete from [links$] where ..." cn.Close 

最基本的insert语句只是为表/工作表中的每一列提供值,这些列的显示顺序相同:

 cn.Execute "insert into [links$] values ('col1value','col2value','col3value')" 

另一种方法是使用RecordSet接口,例如:

 Option Explicit Const adCmdTable = 2 Const adLockBatchOptimistic = 4 Const adLockOptimistic = 3 dim ado, rs set ado = CreateObject("ADODB.Connection") set rs = CreateObject("ADODB.RecordSet") ado.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=example.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";" ado.Open 'ado.Execute "DROP TABLE Sheet1" ado.Execute "CREATE TABLE Sheet1 (ID int, name VARCHAR)" rs.Open "Sheet1", ado, , adLockOptimistic, adCmdTable dim i for i = 0 to 4 ' create a new record, populate the fields then update the data source rs.AddNew rs.Fields("ID").Value = i rs.Fields("name").Value = "Dave" rs.Update next 'i ' also showing populating a dictionary to pass to update() instead ' of inserting into the record's fields directly rs.AddNew dim dict set dict = CreateObject("Scripting.Dictionary") dict("ID") = 99 dict("name") = "Geoff" rs.Update dict.Keys(), dict.Items() rs.Close ado.Close 

给你

 ID | 名称
 ----------  
  0 | 戴夫  
  1 | 戴夫  
  2 | 戴夫  
  3 | 戴夫  
  4 | 戴夫  
 99 | 杰夫