ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何运用VBA+ADO使EXCEL和ACCESS进行数据交互

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

作者:绿色风 分类: 时间:2022-08-17 浏览:112
楼主
xmyjk
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

SQL与ACC.zip
2楼
い卋玑┾宝珼
妃妃是最棒的,学习了
3楼
qinhuan66
好好学习天天向上
4楼
icenotcool


5楼
老糊涂
好好学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap