ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] ADO导入数据遇到极大困难!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-7-2 11:15 | 显示全部楼层 |阅读模式
各位朋友,导入数据遇到很大困难,紧急求助:
VBA  不打开文件  而导入数据(是不是ado?)

1、如果P1为“周考”,导入周考文件夹下每个文件的数据(包括姓名、班级、一卷二卷成绩。格式已经设置好,一样的)到本表对应位置。

2、如果P1为“月考”
  (1)先导入月考文件夹下“一卷机读卡”的所有一卷数据,到本表对应位置(对应到每科的一卷成绩单元格)。
   (2)然后导入月考文件夹下的分班二卷成绩到本表(对应到本表二卷分数单元格。)
    这一步的关键:
    需要按照第(1)步,一卷成绩的姓名、班级,逐一对比,对应导入相关人员的二卷(如果二卷分数为空白或0,一律导入为0)。
    如果存在有二卷,而没有一卷成绩的,请也导入他的姓名、班级、并导入二卷成绩(这里一卷不管他)。


难度很大,简直不会,特求助高手相救,深表谢意!

具体见附件(一个独立文件,两个文件夹下,还有几个文件,附件齐备),在线等待。

导入数据.rar

33.51 KB, 下载次数: 18

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-2 12:29 | 显示全部楼层
兄弟伙些,帮帮我啊!
整不起,恼火哦

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-2 12:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
SQL语句一窍不通,窍窍不通

TA的精华主题

TA的得分主题

发表于 2011-7-2 13:19 | 显示全部楼层
问题交待的好像不是很清楚,下面代码是第一步,先看看是不是这样?
Private Sub CommandButton1_Click()
    Dim Mypath$
    Mypath = ThisWorkbook.Path & "\" & [p1]
    If Dir(Mypath, vbDirectory) = "" Then
        MsgBox "文件夹不存在,请检查!", vbInformation
    End If
    ActiveSheet.UsedRange.Offset(3).ClearContents
    If [p1] = "周考" Then
        Call 周考(Mypath)
    ElseIf [p1] = "月考" Then
        Call 月考(Mypath)
    End If
End Sub

Sub 周考(Mypath$)
    Dim MyFile$, SQL$, m&
    Mypath = Mypath & "\"
    MyFile = Dir(Mypath & "*.xls")
    Set cnn = CreateObject("adodb.connection")
    Do While Len(MyFile)
        m = m + 1
        If m = 1 Then
            cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no';data source=" & Mypath & MyFile
            SQL = "select * from [sheet1$a4:n65536] where f2 is not null"
        Else
            SQL = SQL & " union all select * from [Excel 8.0;hdr=no;Database=" & Mypath & MyFile & "].[sheet1$a4:n65536] where f2 is not null"
        End If
       MyFile = Dir
    Loop
    [a4].CopyFromRecordset cnn.Execute(SQL)
    cnn.Close
    Set cnn = Nothing
End Sub

Sub 月考(Mypath$)
    Dim MyFile$, SQL$, m&, s$
    Mypath = Mypath & "\"
    MyFile = Dir(Mypath & "*.xls")
    Set cnn = CreateObject("adodb.connection")
    cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no';data source=" & Mypath & "一卷机读卡.xls"
    s = "select * from [sheet1$a2:h65536] where f2 is not null"
    Do While Len(MyFile)
        If MyFile <> "一卷机读卡.xls" Then
            m = m + 1
            If m = 1 Then
                SQL = "select * from [Excel 8.0;hdr=no;Database=" & Mypath & MyFile & "].[sheet1$a4:h65536] where f2 is not null"
            Else
                SQL = SQL & " union all select * from [Excel 8.0;hdr=no;Database=" & Mypath & MyFile & "].[sheet1$a4:h65536] where f2 is not null"
            End If
        End If
       MyFile = Dir
    Loop
    SQL = "select a.f1,a.f2,b.f3,a.f3,b.f4,a.f4,b.f5,a.f5,b.f6,a.f6,b.f7,a.f7,b.f8,a.f8 from (" & SQL & ") a left join (" & s & ") b on a.f2=b.f2"
    [a4].CopyFromRecordset cnn.Execute(SQL)
    cnn.Close
    Set cnn = Nothing
End Sub

[ 本帖最后由 zhaogang1960 于 2011-7-2 14:19 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-7-2 13:21 | 显示全部楼层
请看附件:
导入数据.rar (37.76 KB, 下载次数: 40)

[ 本帖最后由 zhaogang1960 于 2011-7-2 14:20 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-2 18:51 | 显示全部楼层
哇塞,凶,真的凶!咋这么厉害!完全正确!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-2 21:05 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-16 00:43 | 显示全部楼层
原帖由 zhaogang1960 于 2011-7-2 13:21 发表
请看附件:
950042


zhaogang1960老师你好:
非常感谢前次您的帮助。但是现在我又发现一个问题:
就是如果班级虽然不同,但是姓名却相同,这种情况下,由于没有将班级和姓名“捆绑”,就出现了错误,表现为
同一个人,导入了两次,分别是导入不同班级的两个成绩,这样两个人(同一姓名)就有四个重复名字(各自在不同的班级,两个不同的成绩)。
如何修改下程序,防止这一错误?
请老师在帮下忙,万分感激!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-16 00:46 | 显示全部楼层
原帖由 zhaogang1960 于 2011-7-2 13:21 发表
请看附件:
950042


如同附件。
错误表现比如
班级 姓名 成绩
1        张三  100
2       张三   200
导入后就出现了这样的情况:
班级   姓名   成绩
1          张三    100
1          张三    200
2          张三    100
2          张三    200

如何纠正?
谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-16 00:53 | 显示全部楼层
把zhaoguang老师的附件数据修改了下,更能显示问题,便于说明。

请老师帮忙看下,咋整?重复耶……
非常感谢您的不吝赐教,谢谢!
请看附件。

导入数据.rar

46.51 KB, 下载次数: 7

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

本版积分规则

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

GMT+8, 2025-1-13 06:14 , Processed in 0.031376 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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