ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1652|回复: 7

[求助] 利用两个excel,根据查询条件生成第三个excel

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-6-2 10:36 | 显示全部楼层 |阅读模式
本帖最后由 拙诚虎 于 2015-6-2 10:38 编辑

各位老师好!
有一个需求求助。
有两个excel文件,
一个是记载学生信息表,其中有入校日期。
另一个是记载考试成绩和考试日期。
想用excel的宏,自动生成一个excel,那个excel中只有入校半年(6个月)以后的成绩。
(特殊要求是:执行宏的时候,不允许打开那两个excel文件。)
具体请参考附件。
这个学校校长要,多谢多谢!!!

request.zip

26.4 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2015-6-2 10:38 | 显示全部楼层
没有附件??

TA的精华主题

TA的得分主题

发表于 2015-6-2 11:20 | 显示全部楼层
请测试》》》
  1. Sub ado() 'by feiren228
  2.     Dim cnn As Object, rs As Object, sql$
  3.     Set cnn = CreateObject("Adodb.Connection")
  4.     Set rs = CreateObject("adodb.recordset")
  5.     p1$ = ThisWorkbook.Path & "\Student-info.xls"
  6.     p2$ = ThisWorkbook.Path & "\Student-score.xls"
  7.     If Application.Version * 1 <= 11 Then
  8.         cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties='Excel 8.0;imex=1;hdr=yes';Data Source=" & ThisWorkbook.FullName
  9.     Else
  10.         cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;imex=1;hdr=yes';Data Source=" & ThisWorkbook.FullName
  11.     End If
  12.     sql = "select a.* from [Excel 8.0;imex=1;hdr=yes;Database=" & p2 & "].[sheet1$A2:K] a left join [Excel 8.0;imex=1;hdr=yes;Database=" & p1 & "].[sheet1$A2:C] b on a.学号=b.学号 where Month(a.考试日期 - b.入学日期)>=6"
  13.     Set rs = cnn.Execute(sql)
  14.     [a3:k10000] = ""
  15.     [a3].CopyFromRecordset cnn.Execute(sql)
  16.     rs.Close
  17.     Set rs = Nothing
  18.     Set cnn = Nothing
  19. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-6-2 11:22 | 显示全部楼层
。。。。。。。。。
request-test.zip (34.58 KB, 下载次数: 35)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-3 08:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
feiren228 发表于 2015-6-2 11:22
。。。。。。。。。

这么快,太厉害了!太感谢了!我测试一下看看。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-3 11:00 | 显示全部楼层
feiren228 发表于 2015-6-2 11:22
。。。。。。。。。

真诚感谢你的代码,能否兼容excel2013版和2003版。我的老板是excel2013,员工是excel2003.
另外,那个按钮如果加在Student-score.xls文件中,然后自动生成goal.xls文件,感激不尽!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-4 09:12 | 显示全部楼层
feiren228 发表于 2015-6-2 11:22
。。。。。。。。。

    If Application.Version * 1 <= 11 Then

        cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties='Excel 8.0;imex=1;hdr=yes';Data Source=" & ThisWorkbook.FullName

    Else

        cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;imex=1;hdr=yes';Data Source=" & ThisWorkbook.FullName

    End If
这段代码已经兼容了所有excel,非常感谢!

TA的精华主题

TA的得分主题

发表于 2018-8-24 10:17 | 显示全部楼层
sql = "select a.* from [Excel 8.0;imex=1;hdr=yes;Database=" & p2 & "].[sheet1$A2:K] a left join [Excel 8.0;imex=1;hdr=yes;Database=" & p1 & "].[sheet1$A2:C] b on a.学号=b.学号 where Month(a.考试日期 - b.入学日期)>=6"
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-12 18:58 , Processed in 0.023767 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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