下面看我们的解决方案代码: Sub mynz_23() '第23讲利用VBA向一个已有的数据表中添加数据记录的方法 Dim cnADO As New ADODB.Connection Dim rsADO As ADODB.Recordset Dim strPath, strSQL, strTable As String strPath = ThisWorkbook.Path & "\mydata2.accdb" strTable = "19年销售情况" cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath strSQL = "SELECT * FROM " & strTable Set rsADO = New ADODB.Recordset rsADO.Open strSQL, cnADO, 1, 3 '汇报给用户记录数 MsgBox "添加前记录数为:" & rsADO.RecordCount Sheets("23").Select '添加记录 t = 2 Do While Cells(t, 1) <> "" rsADO.MoveLast rsADO.addnew For i = 0 To rsADO.Fields.Count - 1 rsADO.Fields(i) = Sheets("23").Cells(t, i + 1) Next i rsADO.Update t = t + 1 Loop '汇报给用户最后的记录数 MsgBox "添加后记录数为:" & rsADO.RecordCount rsADO.Close cnADO.Close Set rsADO = Nothing Set cnADO = NothingEnd Sub 代码截图:代码解读:1): Dim cnADO As New ADODB.Connection Dim rsADO As ADODB.Recordset Dim strPath, strSQL, strTable As String strPath = ThisWorkbook.Path & "\mydata2.accdb" strTable = "19年销售情况" cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath strSQL = "SELECT * FROM " & strTable Set rsADO = New ADODB.Recordset rsADO.Open strSQL, cnADO, 1, 3以上的代码我用了前期绑定的方法创建的ADO, 并打开了数据表的集合2): '添加记录 t = 2 Do While Cells(t, 1) <> "" rsADO.MoveLast rsADO.addnew For i = 0 To rsADO.Fields.Count - 1 rsADO.Fields(i) = Sheets("Sheet4").Cells(t, i + 1) Next i rsADO.Update t = t + 1 Loop上述代码是把工作表中的数据添加到数据表中.这里需要讲解的是: rsADO.addnew 和 rsADO.Update 语句,这两条语句的作用是是向记录集中添加记录,和写入记录..addnew 告诉记录集,我们要添加一行 .update 通知记录集,我们要把准备好的这个行写入数据库了.3) 为了达到人机对话的目的,我在两处有了代码如下: '汇报给用户记录数 MsgBox "添加前记录数为:" & rsADO.RecordCount '汇报给用户最后的记录数 MsgBox "添加后记录数为:" & rsADO.RecordCount 运行的过程如下:首先显示添加前的记录: 运行完成后显示添加后的记录数: 看看我们运行完,添加好数据之后的数据库截图: 今日内容回向:1 如何向已经有的数据记录集中添加数据?2 ADDNWE 和Update的作用是什么? 本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm 我20多年的VBA实践经验,全部浓缩在下面的各个教程中: