分享

Excel | 如何运用VBA+ADO使EXCEL和ACCESS进行数据交互 | ADO,ACCESS,数据交互,EXCEL,VBA

 昵称2548375 2018-09-29
Q:如下要求:
1、将附件里的(7-31.XLS)工作簿(TestData)表中的B:AG列第4行到最后一行(最后一行不定)数据导入到(检验数据库--误差数据)表中 ,倒入工作簿需手选,如果导入其他工作簿时,数据库里的出厂编号列已有的话,也就是说出现重复编号时,替换整行数据,例如已经导入了一个(7-31.XLS)工作簿(TestData)表中的B:AG列第4行到最后一行数据,其中有编号1207001,而(7-31.XLS)工作簿(TestData)表中的B:AG列第4行到最后一行中的数据 也有1207001这个编号时。直接替换掉1207001后面的整行数据。无则在数据库插入数据。
2、按照A2-A17单元格查找数据库中的数据并将整行的数据复制到“问题.xls”工作簿“SHEET1"工作表中来
3、将“问题.xls”工作簿“SHEET2"工作表中的A2-L3导入到检验数据库中的“基本资料”表

A:第一个要求的思路是,先交叉筛选出两表重复的数据,然后从ACC数据库中删除,然后再用插入数据。
第二个要求就是直接查询啦。
第三个要求无非也是直接插入数据。
  1. Sub wt1()
  2.     Dim cnn As Object, SQL$, fpth As String

  3.     fpth = Application.GetOpenFilename("excel文件,*.xls*", , , , False) '运用打开文件对话框获取打开文件路径
  4.     Set cnn = CreateObject("adodb.connection") '创建ADO连接对象
  5.     cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "" & "检验数据库.mdb" '设置连接参数
  6.     SQL = "delete from 误差数据 where 出厂编号 in (select 出厂编号 from [Excel 8.0;Database=" & fpth & "].[TestData$b3:AG65536])" '从数据库删除重复数据
  7.     cnn.Execute SQL '执行SQL语句
  8.     SQL = "insert into 误差数据 select * from [Excel 8.0;Database=" & fpth & "].[TestData$b3:AG65536]" '然后插入所有数据
  9.     cnn.Execute SQL '执行
  10.     cnn.Close
  11.     Set cnn = Nothing
  12. End Sub

  13. Sub wt2()
  14.     Dim cnn As Object, SQL$

  15.     Set cnn = CreateObject("adodb.connection") '创建ADO连接对象
  16.     cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "" & "检验数据库.mdb" '设置连接参数
  17.     SQL = "select * from 误差数据 where 出厂编号 in (" & Join(Application.Transpose(Range("a2:a17")), ",") & ")" '做条件查询
  18.     Range("b2").CopyFromRecordset cnn.Execute(SQL) '输出到单元格
  19.     cnn.Close
  20.     Set cnn = Nothing
  21. End Sub

  22. Sub wt3()
  23.     Dim cnn As Object, SQL$, fpth As String

  24.     Set cnn = CreateObject("adodb.connection") '创建ADO连接对象
  25.     cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "" & "检验数据库.mdb" '设置连接参数
  26.     SQL = "insert into 基本资料 select * from [Excel 8.0;Database=" & ThisWorkbook.FullName & "].[Sheet2$b1:l65536]"
  27.     '直接插入数据
  28.     cnn.Execute SQL '执行
  29.     cnn.Close '关闭连接
  30.     Set cnn = Nothing
  31. End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多