Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2069|回复: 2

[已解决]想收集更多关于遍历EXCEL工作表的方案

[复制链接]
发表于 2012-11-24 21:00 | 显示全部楼层 |阅读模式
想收集更多关于遍历EXCEL工作表的方案,请各位朋友踊跃解答,万分感谢
最佳答案
2012-11-27 08:36
本帖最后由 490540970 于 2012-11-27 08:39 编辑

有如下成熟代码和这个极为类似,稍加改动即可,值得参考:功能为合并同一文件夹下的所有电子表格到一张表中,簿中各表分别以原电子表的表名命名。
Dim CurFile As String
    Dim DestWB As Workbook
    Dim ws As Object
    Const DirLoc As String = "C:\" '(改成你实际存放文件的folder)
    Application.ScreenUpdating = False
    Set DestWB = Workbooks.Add(xlWorksheet)
    CurFile = Dir(DirLoc & "*.xls") '(.CSV,.PRN等格式类推)
    Do While CurFile <> vbNullString
        Dim OrigWB As Workbook
        Set OrigWB = Workbooks.Open(Filename:=DirLoc & CurFile, ReadOnly:=True)
        CurFile = Left(Left(CurFile, Len(CurFile) - 4), 29)
        For Each ws In OrigWB.Sheets
            ws.Copy After:=DestWB.Sheets(DestWB.Sheets.Count)
            If OrigWB.Sheets.Count > 1 Then
                DestWB.Sheets(DestWB.Sheets.Count).Name = CurFile & ws.Index
            Else
                DestWB.Sheets(DestWB.Sheets.Count).Name = CurFile
            End If
        Next
        OrigWB.Close SaveChanges:=False
        CurFile = Dir
    Loop
    Application.DisplayAlerts = False
        DestWB.Sheets(1).Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Set DestWB = Nothing

工作表遍历案例.zip

8.64 KB, 下载次数: 22

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2012-11-24 21:32 | 显示全部楼层
回复

使用道具 举报

发表于 2012-11-27 08:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 490540970 于 2012-11-27 08:39 编辑

有如下成熟代码和这个极为类似,稍加改动即可,值得参考:功能为合并同一文件夹下的所有电子表格到一张表中,簿中各表分别以原电子表的表名命名。
Dim CurFile As String
    Dim DestWB As Workbook
    Dim ws As Object
    Const DirLoc As String = "C:\" '(改成你实际存放文件的folder)
    Application.ScreenUpdating = False
    Set DestWB = Workbooks.Add(xlWorksheet)
    CurFile = Dir(DirLoc & "*.xls") '(.CSV,.PRN等格式类推)
    Do While CurFile <> vbNullString
        Dim OrigWB As Workbook
        Set OrigWB = Workbooks.Open(Filename:=DirLoc & CurFile, ReadOnly:=True)
        CurFile = Left(Left(CurFile, Len(CurFile) - 4), 29)
        For Each ws In OrigWB.Sheets
            ws.Copy After:=DestWB.Sheets(DestWB.Sheets.Count)
            If OrigWB.Sheets.Count > 1 Then
                DestWB.Sheets(DestWB.Sheets.Count).Name = CurFile & ws.Index
            Else
                DestWB.Sheets(DestWB.Sheets.Count).Name = CurFile
            End If
        Next
        OrigWB.Close SaveChanges:=False
        CurFile = Dir
    Loop
    Application.DisplayAlerts = False
        DestWB.Sheets(1).Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Set DestWB = Nothing
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-28 04:35 , Processed in 0.224345 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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