Excel交流网
  • 设为首页|收藏本站|手机版
  • Excel-教程-技巧-培训视频

  • 网站首页
  • Excel教程
  • 新闻动态
  • Excel资源
  • 关于我们

Excel教程

Excel操作
Excel函数
Excel图表
Excel VBA
Excel 行业应用

联系方式

Excel中交流网 联系方式

QQ:18449932 


网  址:www.excel-cn.com  

当前位置:网站首页 > Excel教程 > Excel VBA
Excel VBA

合并Excel工作簿-合并到不同工作表和同一个工作表

在职场偶尔会有将多个Excel文件合并到同一个Excel文件的需求。这个需求可能又分两种,一种是合并到同一个Excel文件中的同一个工作表中,另一种是合并到同一个Excel文件中的不同工作表。

以下Excel VBA代码就可实现 以上这些功能: 让用户选择一个指定的文件夹,程序可将指定文件夹下面所有Excel文件合并到一个汇总的Excel文件中


实现效果(为简单,在选择的文件夹下只放了2个工作簿):


原表1:

Excel技巧


原表2:

Excel技巧


合并后效果1:

Excel技巧


合并后效果2:

Excel技巧





作者1:Excel小子-Office中国


Sub PickFolder()

    

        '** 使用Shell.Application对象来选择文件夹

        Dim objShell

        Dim objFolder

        Dim strPath As String

        Dim ph As String

        Dim wk As Workbook, wb As Workbook

        Dim sh As Worksheet

        Application.ScreenUpdating = False

        Application.DisplayAlerts = False

        Set objShell = CreateObject("Shell.Application")

       

        '** 显示选择文件夹对话框

        Set objFolder = objShell.BrowseForFolder(0, "选择文件目录", 0, 0)

       

        If Not objFolder Is Nothing Then        '** 用户选择了文件夹

            strPath = objFolder.self.Path

            Set wb = Workbooks.Add

            ph = Dir(strPath & "\" & "*.xls*")

            Do While ph <> ""

                Set wk = Workbooks.Open(strPath & "\" & ph)

                For Each sh In wk.Worksheets

                    sh.Copy after:=wb.Worksheets(wb.Worksheets.Count)

                Next sh

                wk.Close False

                ph = Dir

            

            Loop

            For Each sh In wb.Worksheets

                If WorksheetFunction.CountA(sh.UsedRange) = 0 Then

                    sh.Delete

                End If

            

            Next sh

            wb.SaveAs ThisWorkbook.Path & "\合并文档.xlsx"

            wb.Close

        Else

            strPath = ""

        End If

       

        Set objFolder = Nothing

        Set objShell = Nothing

        Application.DisplayAlerts = True

        Application.ScreenUpdating = True

End Sub

 

作者2:江苏大侠- Office中国 (对以上代码改进)


Sub PickFolder()

    Dim strPath As String

    Dim ph As String

    Dim wk As Workbook, wb As Workbook

    Dim sh As Worksheet

    Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    With Application.FileDialog(msoFileDialogFolderPicker)

        If .Show = -1 Then

            strPath = .SelectedItems(1) & "\"

            Else

            Exit Sub

        End If

    End With

    Set wb = Workbooks.Add(xlWorksheet)

    ph = Dir(strPath & "\" & "*.xlsx")

    Do While ph <> ""

        Set wk = Workbooks.Open(strPath & "\" & ph)

        For Each sh In wk.Worksheets

            sh.Copy After:=wb.Sheets(wb.Sheets.Count)

        Next sh

        wk.Close False

        ph = Dir

    Loop

    wb.Sheets(1).Delete

    wb.SaveAs ThisWorkbook.Path & "\合并文档.xlsx"

   ' wb.Close

    Application.DisplayAlerts = True

    Application.ScreenUpdating = True

End Sub


作者3:江苏大侠- Office中国 (合并到同一个工作表中)


Sub PickFolder()

    Dim strPath As String

    Dim ph As String

    Dim wk As Workbook, wb As Workbook

    Dim sh As Worksheet

    Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    With Application.FileDialog(msoFileDialogFolderPicker)

        If .Show = -1 Then

            strPath = .SelectedItems(1) & "\"

            Else

            Exit Sub

        End If

    End With

    Set wb = Workbooks.Add(xlWorksheet)

    ph = Dir(strPath & "\" & "*.xls*")

    Do While ph <> ""

        Set wk = Workbooks.Open(strPath & "\" & ph)

        For Each sh In wk.Worksheets

            sh.UsedRange.Copy wb.Sheets(1).Range("a65536").End(xlUp).Offset(1, 0)

        Next sh

        wk.Close False

        ph = Dir

    Loop

    wb.SaveAs ThisWorkbook.Path & "\合并文档.xlsx"

    wb.Close

    Application.DisplayAlerts = True

    Application.ScreenUpdating = True

End Sub




 

点击次数:  更新时间:2016-12-01 21:28:44  【打印此页】  【关闭】
上一条:Excel单位转换解答实例  下一条:带注册及登录功能的Excel Login界面
本站动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图|网站管理

中山市天鸣科技发展有限公司 版权所有 1999-2024 粤ICP备10043721号

QQ:18449932

免费Excel教程、Excel技巧、Excel培训、Excel函数公式、Excel图表、Excel VBA

Excel教程|Excel技巧|Excel培训|Excel函数公式|Excel图表|VBA

Powered by MetInfo 5.3.12 ©2008-2026  www.metinfo.cn