如何使用VB实现多个excel表格合并在一个EXCEL表格里面

目前一个文件夹里面有多个EXCEL表格,现在要通过VB实现将文件夹的多个EXCEL表格合并到一个excel表格里面,且每个EXCEL文件分别在合并的EXCEL表格中占用一... 目前一个文件夹里面有多个EXCEL表格,现在要通过VB实现将文件夹的多个EXCEL表格合并到一个excel表格里面,且每个EXCEL文件分别在合并的EXCEL表格中占用一个sheet页面。 展开
 我来答
cnypzhw
2015-01-09 · TA获得超过2152个赞
知道小有建树答主
回答量:920
采纳率:0%
帮助的人:688万
展开全部


附件中有完整示例,运行 hb 后会弹出选择合并文件夹的对话框,选择后会将被选目录下所有工作薄的工作表合并到一个新建工作薄,为区分方便,原工作薄中的所有工作表合并后的sheet名称以同一颜色显示,并以“原工作薄-原工作表”的格式命名sheet,以下为完整代码

Private Sub hb()
    Dim hb As Object, kOne As Boolean, tabcolor As Long
    Set hb = Workbooks.Add
    Application.DisplayAlerts = False
    For i = hb.Sheets.Count To 2 Step -1
        hb.Sheets(i).Delete
    Next
    
    Dim FileName As String, FilePath As String
    Dim iFolder As Object, rwk As Object, Sh As Object
    Set iFolder = CreateObject("shell.application").BrowseForFolder(0, "请选择要合并的文件夹", 0, "")
    If iFolder Is Nothing Then Exit Sub
    FilePath = iFolder.Items.Item.Path
    FilePath = IIf(Right(FilePath, 1) = "\", FilePath, FilePath & "\")
    FileName = Dir(FilePath & "*.xls*")
    Do Until Len(FileName) = 0
        If UCase(FilePath & FileName) <> UCase(ThisWorkbook.Path & "\" & ThisWorkbook.Name) Then
            Set rwk = Workbooks.Open(FileName:=FilePath & FileName)
            tabcolor = Int(Rnd * 56) + 1
            With rwk
                For Each Sh In .Worksheets
                    Sh.Copy After:=hb.Sheets(hb.Sheets.Count)
                    hb.Sheets(hb.Sheets.Count).Name = FileName & "-" & Sh.Name
                    hb.Sheets(hb.Sheets.Count).Tab.ColorIndex = tabcolor
                    If Not kOne Then hb.Sheets(1).Delete: kOne = True
                Next
                .Close True
             End With
        End If
        Set rwk = Nothing
        FileName = Dir
    Loop
    Application.DisplayAlerts = True
End Sub


百度网友066dc732e
2015-01-09 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5675
采纳率:33%
帮助的人:1865万
展开全部

由于你描述得太简单了,所以,只能给你提供一个思路,请按照此思路,进行修改完善代码即可。

Sub FileJoin()
    Dim Wb As Workbook
    Dim cPath$, myFile$
    cPath = ThisWorkbook.Path & "\"'获取本文件所在路径
    '如果扩展名不是xls请修改为你实际的扩展名
    myFile = Dir(cPath & "*.xls")
    Set Wb = ThisWorkbook
    Application.ScreenUpdating = False
    Do While myFile <> ""
        If myFile <> ThisWorkbook.Name Then
            With Workbooks.Open(cPath & myFile)
                '将子文件中的第一个工作表复制到本工作薄中
                .Sheets(1).Copy after:=Wb.Sheets(Wb.Sheets.Count)
                .Close False
            End With
        End If
        myFile = Dir'在本文件夹下查找下一个xls扩展名的文件
    Loop
    Application.ScreenUpdating = True
    MsgBox "汇总完毕!", vbInformation, "提示"
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式