ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助代码修改

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-25 14:49 | 显示全部楼层 |阅读模式
Sub ConsolidateDataFromSelectedFolder正确()
    Dim folderPath As String
    Dim fileName As String
    Dim workBk As Workbook
    Dim sourceSheet As Worksheet
    Dim destSheet As Worksheet
    Dim lastRow As Long
    Dim i As Long

    ' 提示用户选择文件夹
    With Application.FileDialog(msoFileDialogFolderPicker)
       .Title = "请选择一个文件夹"
       .Show
        If .SelectedItems.Count = 0 Then
            MsgBox "没有选择文件夹,程序将退出。", vbExclamation, "错误"
            Exit Sub
        End If
        folderPath = .SelectedItems(1) & "\"
    End With

    ' 在汇总工作簿中创建新的工作表用于存放汇总数据
    Set destSheet = ThisWorkbook.Sheets.Add
    destSheet.Name = "汇总表"

    ' 初始化行号
    lastRow = 1

    ' 遍历文件夹中的所有文件
    fileName = Dir(folderPath & "*.xlsx")
    Do While fileName <> ""
        ' 打开工作簿
        Set workBk = Workbooks.Open(folderPath & fileName)

        ' 遍历每个工作表,检查是否为需要的工作表
        For i = 1 To workBk.Sheets.Count
            Select Case workBk.Sheets(i).Name
                Case "三步", "水迳", "水下"
                    ' 设置源工作表和目标工作表
                    Set sourceSheet = workBk.Sheets(i)
                    Set destSheet = ThisWorkbook.Sheets("汇总表")

                    ' 复制数据到汇总工作表,仅复制值,不复制公式
                    destSheet.Range("A" & lastRow).Resize(sourceSheet.Range("A15:I100").Rows.Count, sourceSheet.Range("A15:I100").Columns.Count).Value = sourceSheet.Range("A15:I100").Value

                    ' 在 A 列写入工作表名称
                    destSheet.Range("A" & lastRow, "A" & lastRow + sourceSheet.Range("A15:I100").Rows.Count - 1) = workBk.Sheets(i).Name

                    ' 提取标题并写入到 A1 行
                    destSheet.Range("A1:P1") = sourceSheet.Range("A15:P14").Value

                    ' 更新行号
                    lastRow = lastRow + sourceSheet.Range("A15:I100").Rows.Count
            End Select
        Next i

        ' 关闭工作簿,不保存更改
        workBk.Close savechanges:=False

        ' 获取下一个文件名
        fileName = Dir()
    Loop

    ' 清理
    Set workBk = Nothing
    Set sourceSheet = Nothing
    Set destSheet = Nothing

    ' 可选:自动调整汇总数据表的列宽
    ThisWorkbook.Sheets("汇总表").Columns.AutoFit

    MsgBox "数据汇总完成!", vbInformation, "完成"
End Sub

怎样把固定的工作表"三步", "水迳", "水下"改为动态引用汇总工作簿里面的班级表a列来获取我要提取的工作表?

测试.zip

270.39 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2024-3-25 14:58 | 显示全部楼层
AI写的代码就不要发了,不会有人去修改那个代码。
你就把需求说清楚就行了。

TA的精华主题

TA的得分主题

发表于 2024-3-25 15:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ykcbf1100 于 2024-3-25 15:06 编辑

需求猜一下:只选取”成绩表.xlsx“中汇总表A列所列的工作表名的工作表,以便一步操作。如果是这样,用字典去固定这些表名就可以做到了。

TA的精华主题

TA的得分主题

发表于 2024-3-25 15:11 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 15:39 | 显示全部楼层

要提取这些表,如果在班级表设置,我要提取那个表就要那个工作表这样的功能。
11.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 15:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ykcbf1100 发表于 2024-3-25 15:03
需求猜一下:只选取”成绩表.xlsx“中汇总表A列所列的工作表名的工作表,以便一步操作。如果是这样,用字典 ...

这样,代码怎样去设置啊?

TA的精华主题

TA的得分主题

发表于 2024-3-25 15:55 | 显示全部楼层
458863601 发表于 2024-3-25 15:40
这样,代码怎样去设置啊?

你都没有具体要求,你也没有效果图,无法向下做。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 16:06 | 显示全部楼层
ykcbf1100 发表于 2024-3-25 15:55
你都没有具体要求,你也没有效果图,无法向下做。

意思是根据文件夹中汇总表工作簿班级表a列的数据来选择我要提取的工作表,然后提取工作表指定的区域的数值。再把提取的数据汇总在一张表中。
微信截图_20240325160306.jpg

TA的精华主题

TA的得分主题

发表于 2024-3-25 16:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
458863601 发表于 2024-3-25 16:06
意思是根据文件夹中汇总表工作簿班级表a列的数据来选择我要提取的工作表,然后提取工作表指定的区域的数 ...

汇总表效果图呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 16:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ykcbf1100 发表于 2024-3-25 15:55
你都没有具体要求,你也没有效果图,无法向下做。

我添加你的QQ了,可以通过帮我看看吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 23:57 , Processed in 0.039417 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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