请问 怎样把文件夹下所有文件夹及文件及其sheet的名称 及其中数据 合为一个excel文档的一个sheet页中

时间:2022-02-10 19:57:01
例如
文件夹及文件结果如下
       |---文件夹B---e.xls---sheet1,sheet2
      | 
文件夹A|---文件夹C---f.xls
      |
      |---文件夹D

希望得到如下:运行宏后跳出打开文件夹对话框,后选择文件夹A
得到excel数据如下
    A        B         C     D     E
1 文件夹B  e.xls    sheet1  sheet1中的所有数据
2 文件夹B  e.xls    sheet2  sheet2中的所有数据
3 文件夹C  f.xls    sheet   sheet中的所有数据
4
5

就是把文件夹下所有文件夹及文件及其sheet的名称 及其中数据 合为一个excel文档的一个sheet页中

非常感谢!

13 个解决方案

#1


大致意思明白了,不过问一下,E这一列的数据就是一个sheet1的所有数据吗?
那么这个sheet1中比如说有10行数据,这10行数据全部显示在[1,E]这一列中吗?

#2


不是
如果sheet1中有10行数据

   A        B         C     D     E 
1 文件夹B  e.xls    sheet1  sheet1中的第一行数据 
2 文件夹B  e.xls    sheet1  sheet1中的第二行数据
3 文件夹B  e.xls    sheet1  sheet1中的第三行数据
以此类推

谢谢帮忙

#3



Sub TEST()
    Application.ScreenUpdating = False '关闭屏显以加速程序运行
    Set fs = Application.FileSearch
    With fs
        .LookIn = "F:\TEST" '假设文件都在该目录及其子目录下
        .Filename = "*.XLS"
        If .Execute > 0 Then
            For i = 1 To .FoundFiles.Count
                Workbooks.Open Filename:=.FoundFiles(i) '依次打开每个文件
                With ActiveWorkbook
                    For Each s In .Sheets '遍历打开文件的每个sheet
                        s.UsedRange.Copy (Windows("汇总表.xls").ActiveSheet.[A65536].End(xlUp).Offset(1, 0)) '将sheet中的内容copy到汇总表中(假设本宏在该文件中使用)
                    Next s
                    .Close '关闭打开的文件
                End With
            Next i
        End If
    End With
    Application.ScreenUpdating = True '恢复屏显
End Sub

#4


丢了一句
        .SearchSubFolders = True
加在With fs之后

#5


我试一下
谢谢先

#6


还要获取指定目录下文件夹和文件的名字
谢谢


文件夹及文件结果如下 
        ¦---文件夹B---e.xls---sheet1,sheet2 
       ¦  
文件夹A ¦---文件夹C---f.xls 
       ¦ 
       ¦---文件夹D 

希望得到如下:运行宏后跳出打开文件夹对话框,后选择文件夹A 
得到excel数据如下 
    A        B         C     D     E 
1 文件夹B  e.xls    sheet1  sheet1中的所有数据 
2 文件夹B  e.xls    sheet2  sheet2中的所有数据 
3 文件夹C  f.xls    sheet   sheet中的所有数据 

#7


.FoundFiles(i)
这个就是包含路径的文件名。

BTW:我更喜欢命令方式获取文件目录,下面的操作将F:\TEST目录存放在F盘根目录下的AAA.TXT文件中(你可以通过dir/?获取更多关于此命令的帮助)。

开始》运行》cmd
dir f:\test /s >f:\aaa.txt

#8


ok
明白了
谢谢^_^

#9




a = c:\a\b\c\we.xls
怎样 从a的字符串中获取到 b 这个位置的 字符串?

最好以 \ 表示
指定获取 两个\ 中间的字符串

#10


如果你要获取某个字符串第2个“\”和第3个“\”之间的子串,那么下面的公式可以实现
=MID(A1,FIND("/",SUBSTITUTE(A1,"\","/",2))+1,FIND("/",SUBSTITUTE(A1,"\","/",3))-FIND("/",SUBSTITUTE(A1,"\","/",2))-1)

如果要在VBA中实现

Sub TEXT()
    A = "c:\a\b\c\we.xls"
    X = Split(A, "\")
    MsgBox X(2)
End Sub

#11


我要用VBA实现
可是没看明白
X = Split(A, "\")  
    MsgBox X(2) 

能否解释一下这两句什么意思?
谢谢

#12


看一下vba帮助就不会有11楼的问题了。
  
X = Split(A, "\")   以“\”为分隔符将字符串A分割成一个一维数组。
X(2)  取该数组的第3个元素。

#13


ok谢谢

#1


大致意思明白了,不过问一下,E这一列的数据就是一个sheet1的所有数据吗?
那么这个sheet1中比如说有10行数据,这10行数据全部显示在[1,E]这一列中吗?

#2


不是
如果sheet1中有10行数据

   A        B         C     D     E 
1 文件夹B  e.xls    sheet1  sheet1中的第一行数据 
2 文件夹B  e.xls    sheet1  sheet1中的第二行数据
3 文件夹B  e.xls    sheet1  sheet1中的第三行数据
以此类推

谢谢帮忙

#3



Sub TEST()
    Application.ScreenUpdating = False '关闭屏显以加速程序运行
    Set fs = Application.FileSearch
    With fs
        .LookIn = "F:\TEST" '假设文件都在该目录及其子目录下
        .Filename = "*.XLS"
        If .Execute > 0 Then
            For i = 1 To .FoundFiles.Count
                Workbooks.Open Filename:=.FoundFiles(i) '依次打开每个文件
                With ActiveWorkbook
                    For Each s In .Sheets '遍历打开文件的每个sheet
                        s.UsedRange.Copy (Windows("汇总表.xls").ActiveSheet.[A65536].End(xlUp).Offset(1, 0)) '将sheet中的内容copy到汇总表中(假设本宏在该文件中使用)
                    Next s
                    .Close '关闭打开的文件
                End With
            Next i
        End If
    End With
    Application.ScreenUpdating = True '恢复屏显
End Sub

#4


丢了一句
        .SearchSubFolders = True
加在With fs之后

#5


我试一下
谢谢先

#6


还要获取指定目录下文件夹和文件的名字
谢谢


文件夹及文件结果如下 
        ¦---文件夹B---e.xls---sheet1,sheet2 
       ¦  
文件夹A ¦---文件夹C---f.xls 
       ¦ 
       ¦---文件夹D 

希望得到如下:运行宏后跳出打开文件夹对话框,后选择文件夹A 
得到excel数据如下 
    A        B         C     D     E 
1 文件夹B  e.xls    sheet1  sheet1中的所有数据 
2 文件夹B  e.xls    sheet2  sheet2中的所有数据 
3 文件夹C  f.xls    sheet   sheet中的所有数据 

#7


.FoundFiles(i)
这个就是包含路径的文件名。

BTW:我更喜欢命令方式获取文件目录,下面的操作将F:\TEST目录存放在F盘根目录下的AAA.TXT文件中(你可以通过dir/?获取更多关于此命令的帮助)。

开始》运行》cmd
dir f:\test /s >f:\aaa.txt

#8


ok
明白了
谢谢^_^

#9




a = c:\a\b\c\we.xls
怎样 从a的字符串中获取到 b 这个位置的 字符串?

最好以 \ 表示
指定获取 两个\ 中间的字符串

#10


如果你要获取某个字符串第2个“\”和第3个“\”之间的子串,那么下面的公式可以实现
=MID(A1,FIND("/",SUBSTITUTE(A1,"\","/",2))+1,FIND("/",SUBSTITUTE(A1,"\","/",3))-FIND("/",SUBSTITUTE(A1,"\","/",2))-1)

如果要在VBA中实现

Sub TEXT()
    A = "c:\a\b\c\we.xls"
    X = Split(A, "\")
    MsgBox X(2)
End Sub

#11


我要用VBA实现
可是没看明白
X = Split(A, "\")  
    MsgBox X(2) 

能否解释一下这两句什么意思?
谢谢

#12


看一下vba帮助就不会有11楼的问题了。
  
X = Split(A, "\")   以“\”为分隔符将字符串A分割成一个一维数组。
X(2)  取该数组的第3个元素。

#13


ok谢谢