vba如何打开一个文件夹及其子文件夹中所有的Excel表并处理合成一个表以方便日后查询,请高手指教不胜感谢

2024-12-31 14:06:43
推荐回答(4个)
回答1:

新建一个汇总表,ALF+F11 打开VBE 新建一个模块 粘贴如下代码, 然后运行此宏

Sub 合并工作簿()
Dim wb As Workbook
Dim sh As Worksheet
Dim tsh As Worksheet
Dim col As Long
Dim i As Long
Set tsh = ThisWorkbook.Sheets(1)
tsh.Cells.Clear
    With Application.FileSearch '调用fileserch对象
        .NewSearch '开始新的搜索
        .LookIn = "D:\360data\重要数据\桌面\新建文件夹"  '设置搜索的路径
        .SearchSubFolders = True '搜索范围包括 LookIn 属性指定的文件夹中的所有子文件夹
        .Filename = "*.xl*" '设置搜索的文件类型
        If .Execute() > 0 Then '如果找到文件
            For i = 1 To .FoundFiles.Count '在搜索到的文件中循环
                Set wb = Workbooks.Open(.FoundFiles(i)) '打开文件
                For Each sh In wb.Sheets '在打开的工作簿中循环每个sheet
                    col = tsh.UsedRange.Columns.Count + tsh.UsedRange.Column '汇总表,表1 当前数据最后一列的列号
                    sh.UsedRange.Copy tsh.Cells(1, col + 1) '把每个表都复制到 汇总表,表1
                Next sh
            wb.Close False  '关闭打开的工作簿
            Next i
        Else
               MsgBox "没找到文件"
        End If
        Set wb = Nothing
        Set tsh = Nothing
     End With

End Sub

 注:由于 fileserch对象 只存在于2003版本, 此方法其他高级版本不适用

回答2:

建议楼主把文件发出来。找人做。
你现在不熟练VBA的很多语法,属性,方法。要教你还不如写给你看。

回答3:

可以实现,就是你的表格太不规范了。徒增很多代码啊。

回答4:

关注一下,我也想知道