ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 程序开发] 字段不完全相同的多个工作簿按工作表名汇总[已小结]

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-8-25 19:28 | 显示全部楼层
下载下来看过了,好复杂!!看来基础太差,还得先补课,只能先留着了!{:soso_e149:}

TA的精华主题

TA的得分主题

发表于 2014-5-6 08:21 | 显示全部楼层
长见识了,此题稍加修改可变为多工作簿复杂汇总通用工具。

TA的精华主题

TA的得分主题

发表于 2014-7-23 16:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
老师:我有个问题想请你指导:

Private Sub UserForm_Initialize()
    pp = 15: mm = 5 'pp:多少列  mm:第几列为查找号
    Dim SQL$, i&, j&, Arr, a()
    With Sheets("数据库")
        Arr = .Range("A2").CurrentRegion
        ReDim a(UBound(Arr, 2) - 1)
         For i = 0 To UBound(a)
             a(i) = .Columns(i + 1).ColumnWidth * 7#  'ListView1各列列宽
         Next
    End With
    Set cnn = New ADODB.Connection  'jet  4 8
    cnn.Open "provider=microsoft.Ace.oledb.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.FullName
   
    SQL = "select * from [数据库$] "
    Set rs = New ADODB.Recordset
    rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
    On Error Resume Next
    With ListView1
        '设置ListView1的标题、显示类型、整行选择和网格线属性
        .ColumnHeaders.Clear
        .View = lvwReport        '   listivew的显示格式为报表格式
        .FullRowSelect = True    '   允许整行选中
        .Gridlines = True        '   显示网格线
        '为ListView1设置标题
        For i = 0 To pp - 1 'rs.Fields.Count - 1
              .ColumnHeaders.Add , , rs.Fields(i).Name, a(i) ' a(i)
         Next i
    End With
    Call 显示数据(SQL)    '为ListView1设置各行数据

    模糊查询.SetFocus
End Sub

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) 'ListView1单击事件
    Dim i&
    TextBox1.Text = Item '首列数据赋给工号文本框
    ary(0) = Item '姓名存放到数组作为删除记录的姓名查询条件
    With ListView1
        For i = 1 To pp - 1 '逐列数据写入文本框
            Controls("TextBox" & i + 1) = .ListItems(Item.Index).SubItems(i)
        Next i
         ary(1) = .ListItems(Item.Index).SubItems(mm - 1)  'pp - 1) '“状态”存放到数组作为删除记录的工作单位查询条件
    End With
End Sub
就是你从前写的通讯录,我在想在窗体上增加一个取数据的工作表,其名为:升级记录,当姓名相同时,在ListView2显示升级记录的数据,并且,可以重复的,有几个显示多少?谢谢了!!

TA的精华主题

TA的得分主题

发表于 2014-9-8 10:27 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-1-4 00:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
和我最近的工作内容有相似的地方,先mark,明天研究一下看看能不能搞懂

TA的精华主题

TA的得分主题

发表于 2015-1-5 14:49 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-1-8 14:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这都是大神的杰作啊

TA的精华主题

TA的得分主题

发表于 2015-3-6 16:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-3-8 13:24 | 显示全部楼层
xmyjk 发表于 2012-1-31 21:44
仅针对取表名和字段名的方法进行讨论,集合了42楼赵老师的意见再次又整理了下:

呵呵,我昨晚翻查了一 ...

好多干货   慢慢吸收

TA的精华主题

TA的得分主题

发表于 2015-4-16 13:38 | 显示全部楼层
zhaogang1960 发表于 2013-5-18 23:48
对你的判断我表示佩服,但你的判断是错误的,我没有精力和耐心“纯粹为了出题”来“表的重构”

下面是 ...

老师您好,这道题我最后输出到工作表的时候,用这个循环出错:
ThisWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count), Count:=k
For x = 1 To k
    Sheets(x + 1).Range("A1").Resize(dd(k), dcd(k)) = arr(k) ’dd、dcd是做的两个字典,用来记录arr(k)数组中的实际有数据的行列数
    Sheets(x + 1).Name = d.Keys()(x - 1)
Next x
只能用这样的笨方法才没出错:
   ThisWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count), Count:=k
    Sheets(2).Range("A1").Resize(dd(1), dcd(1)) = arr(1)
    Sheets(2).Name = d.Keys()(0)
    Sheets(3).Range("A1").Resize(dd(2), dcd(2))) = arr(2)
    Sheets(3).Name = d.Keys()(1)
    Sheets(4).Range("A1").Resize(dd(3), dcd(3)) = arr(3)
    Sheets(4).Name = d.Keys()(2)
    Sheets(5).Range("A1").Resize(dd(4), dcd(4)) = arr(4)
    Sheets(5).Name = d.Keys()(3)
请问一下我那个出错的代码错在哪里了呢?谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 23:39 , Processed in 0.043148 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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