ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 遍历不同工作簿中不同工作表,查找某一字符,并复制其所在内容到另一工作簿

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-1-13 09:56 | 显示全部楼层 |阅读模式
各位朋友好:
     问题:不同的工作簿中有不同的工作表,工作表中有”合计”字符,同时这个字符是合并单元格,(工作表的格式,合并单元格很多)。
    需求:本人仅且只需要取到工作表中有“合计”字符所在    为起始,向上至表头的内容(A;X列),并把此内容复制到另外工作簿中,不含“合计”字符的工作表内容不复制,因为我只要“报价表”下面至“合计”止的信息。
    上千张这样的工作簿,做了好久,没出来,故请各位老师帮忙,谢谢各位!

资料及需求示例表.rar

288.47 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2020-1-13 10:05 | 显示全部楼层
题目倒不难,需要点时间,
提示一下,遍历文件夹,打开工作薄,循环工作表,条件取值,,
有空帮你写一个,

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-13 10:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
opel-wong 发表于 2020-1-13 10:05
题目倒不难,需要点时间,
提示一下,遍历文件夹,打开工作薄,循环工作表,条件取值,,
有空帮你写一个 ...

谢谢OPEL!

TA的精华主题

TA的得分主题

发表于 2020-1-13 15:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你这样汇总过来的目的是啥?汇总过来再整理求和?为啥不用代码一步到位呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-13 15:25 | 显示全部楼层
本帖最后由 liujw_35 于 2020-1-13 15:30 编辑
约定的童话 发表于 2020-1-13 15:03
你这样汇总过来的目的是啥?汇总过来再整理求和?为啥不用代码一步到位呢?

我不要去求和汇总,我是想取各产品中各工序对应的工时、设备、加工费用等明细数据,如能单独获得表头如产品名称,规格,重量等数据是最好的了,与明细匹配是最佳的。如下列所示是最佳的 untitled1.png

TA的精华主题

TA的得分主题

发表于 2020-1-13 18:04 | 显示全部楼层
liujw_35 发表于 2020-1-13 15:25
我不要去求和汇总,我是想取各产品中各工序对应的工时、设备、加工费用等明细数据,如能单独获得表头如产 ...

可以的,明天帮你看下

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-14 08:57 | 显示全部楼层
自己顶一下,跨工作簿工作表内容复制已有代码,但条件取值不会用,本人基础不够,有老师可否修改下代码。
Option Explicit

Dim fso As Object
'主程序
Sub 测试()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set fso = CreateObject("scripting.filesystemobject")
    Range("a1:x65536").ClearContents
    recursion ThisWorkbook.Path & "\"     '递归,当前工作簿路径
End Sub
'
'查找
Sub recursion(myPath As String)
    Dim myFolder As Object, mySubFolder As Object, myFile As Object
    Set myFolder = fso.getfolder(myPath)  '获取当前路径下的文件夹
    For Each myFile In myFolder.Files
        If myFile.Name <> ThisWorkbook.Name Then
            Call closeWorkbook(myPath & "\", myFile.Name)
            Call total(myPath & "\", myFile.Name)
        End If
    Next
    For Each mySubFolder In myFolder.SubFolders  '遍历子文件夹
        recursion mySubFolder.Path    '递归,当前子文件下工作簿路径
    Next
End Sub

'关闭要打开的工作簿
Sub closeWorkbook(myPath, myFile)
    On Error Resume Next
    Workbooks(myFile).Close 0
    On Error GoTo 0
End Sub

'逐一导入
Sub total(myPath, myFile)
    Dim wk As Workbook, sh As Worksheet, i, j As Long, r As Byte, sht As Worksheet, arr
    r = 1
    Set wk = Workbooks.Open(myPath & myFile)  '打开第二层子文件
    For Each sh In wk.Sheets    '遍历其下工作表
      
    If sh.Name <> "汇总" Then
        i = sh.UsedRange.Rows.Count
        j = ThisWorkbook.Sheets("汇总").UsedRange.Rows.Count
        sh.Range("a1:x" & i).Copy
        ThisWorkbook.Sheets("汇总").Range("a" & j + 1).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End If
    Next
    wk.Close
   
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 18:39 , Processed in 0.042833 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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