设为首页收藏本站|繁體中文

Excel 技巧网

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

查看: 3658|回复: 5

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

[复制链接]
发表于 2012-8-3 23:55:33 | 显示全部楼层 |阅读模式
  • 署名作者: xmyjk
  • 版权声明: 版权归本站与作者共有 除本站官方外非作者本人转载须经许可并注明出处
  • 本文来自:
  • 引用作品:
  • 适用版本: 2010 2007 2003以前版本 
  • 语言环境: 简体中文
  • 学习方法: 掌握Excel技巧的关键是动手操作 | 下载 ≠ 知识


  • 免费注册成为本站会员,享用更多功能,结识更多Office办公高手!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 xmyjk 于 2012-8-4 00:10 编辑

    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

    48.68 KB, 下载次数: 87, 下载积分: 消费券 -5 Ti币

    评分

    参与人数 1魅力值 +1 收起 理由
    hpbzxia + 1 技法娴熟:)

    查看全部评分

    发表于 2012-8-4 00:04:34 | 显示全部楼层
    妃妃是最棒的,学习了

    回复 支持 反对

    使用道具 举报

    发表于 2013-4-2 14:43:11 | 显示全部楼层
    好好学习天天向上
    回复 支持 反对

    使用道具 举报

    发表于 2013-11-21 23:23:23 | 显示全部楼层
    回复

    使用道具 举报

    发表于 2014-4-11 11:03:40 | 显示全部楼层
    好好学习
    回复

    使用道具 举报

    发表于 2018-3-13 16:40:12 | 显示全部楼层
    这个不错,学学吧
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    Excel技巧网的会员探讨问题仅代表其个人意见,与网站的立场无关。任何违反国家和地方相关法律法规的言论,本站有义务协助政府相关部门追究发言者的责任!
    本站中非注明转载文章与案例的版权为作者与Excel技巧网共有。若非原文作者,本站之外任何单位或个人未经允许,不得将其用于商业用途。
    若非原文作者,任何形式的非商业性转载必须获得Excel技巧网或作者允许,并注明作者和出处。
    会员发表的帖子如涉及版权纠纷,须自行负责。详情请参考注册时的网站服务条款。
    本站特聘法律顾问:沈学律师

    Archiver|手机版|Excel技巧网 ( 闽ICP备08107682号-2 ) | 闽公网安备 35020302032608号  

    GMT+8, 2018-6-25 14:13

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表