zoukankan      html  css  js  c++  java
  • 在Excel里如何将多个工作簿合并到一个工作簿中

    在Excel里如何将多个工作簿合并到一个工作簿中

    当你必须将多个工作簿合并到一个工作簿时,你遇到过麻烦吗?最让人心烦的就是需要合并的工作簿里有很多张工作表。有人能推荐方法解决这个问题吗?

    利用VBA 将多个工作簿合并到一个工作簿中 
    复杂,高级用户使用

    Excel 的专业用户可以使用VBA 将多个工作簿合并到一个主要的工作簿中。你可以按照如下步骤操作:

    1. 将需要合并的所有工作簿都 放置在同一个目录下。如图:

    2. 打开一个工作簿,其他工作簿将被合并到这个工作簿中。

    3. 点击开发工具 >> Visual BasicMicrosoft Visual Basic for applications  窗口将被打开,点击插入 >> 模块,将下面的代码输入模块窗口中:

    VBA:将多个工作簿合并到一个工作簿中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub GetSheets()
     Path = "C:UsersdtDesktopdt kte"
     Filename = Dir(Path & "*.xls")
     Do While Filename <> ""
     Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
     For Each Sheet In ActiveWorkbook.Sheets
     Sheet.Copy After:=ThisWorkbook.Sheets(1)
     Next Sheet
     Workbooks(Filename).Close
     Filename = Dir()
     Loop
     End Sub

    提示:在上面的代码里,你可以将目录路径更换成你自己使用的路径。

    4. 然后点击  按钮运行代码,工作簿里的全部工作表(包括空白工作表)都将被合并到主工作簿里。

    注意:这个VBA 代码能将整个工作簿合并到主工作簿中,但是不能 针对指定的工作表进行合并。

    利用移动或复制功能将多个工作簿合并到一个工作簿中 
    操作耗时

    利用移动或复制功能将多个工作簿合并到一个工作簿中

    如果你只是Excel 新手,除了复制每张工作表里的内容再粘贴到新工作簿和应用移动或复制功能外,也没有其他选择了。应用移动或复制功能能帮你快速地将一张或多张工作表导出或复制到新工作簿里。

    1. 打开所有需要合并的工作簿。

    2. 在工作表标签栏上选中一个工作簿里的全部工作表名称。按住Ctrl 键或Shift 键,你可以同时选择多个工作表。右键点击工作表名称,从右键菜单里选择移动或复制

    3. 在移动或复制工作表对话框里,在将选定工作表移至工作簿下拉菜单里选择主 工作簿,其他工作簿都将被合并到这个主 工作簿中。然后指定合并工作表的位置。如图:

    4.点击确定。选中的工作表都被合并到了主 工作簿里。

    5. 重复2-4步,将其他工作簿移到主要的工作簿里。这样,所有打开的工作簿中 的工作表都被合并到了一个工作簿里。如图:

     http://www.extendoffice.com/documents/excel/zh-cn-excel/2805-combine-multiple-workbooks.html

    实践证明,下面的代码也很有效:(http://www.excelperfect.com/index.php/2009/05/23/mergesomeworkbooks/)

    Sub CombineWorkbooks()
        Dim strFileName As String
        Dim wb As Workbook
        Dim ws As Object
     
        '包含工作簿的文件夹,可根据实际修改
        Const strFileDir As String = "D:示例数据记录"
     
        Application.ScreenUpdating = False
     
        Set wb = Workbooks.Add(xlWorksheet)
        strFileName = Dir(strFileDir & "*.xls*")
     
        Do While strFileName <> vbNullString
            Dim wbOrig As Workbook
            Set wbOrig = Workbooks.Open(Filename:=strFileDir & strFileName, ReadOnly:=True)
            strFileName = Left(Left(strFileName, Len(strFileName) - 4), 29)
     
            For Each ws In wbOrig.Sheets
                ws.Copy After:=wb.Sheets(wb.Sheets.Count)
                If wbOrig.Sheets.Count > 1 Then
                    wb.Sheets(wb.Sheets.Count).Name = strFileName & ws.Index
                Else
                    wb.Sheets(wb.Sheets.Count).Name = strFileName
                End If
            Next
     
            wbOrig.Close SaveChanges:=False
     
            strFileName = Dir
     
        Loop
     
        Application.DisplayAlerts = False
        wb.Sheets(1).Delete
        Application.DisplayAlerts = True
     
        Application.ScreenUpdating = True
     
        Set wb = Nothing
     
    End Sub
  • 相关阅读:
    【算法】HashMap相关要点记录
    【算法】二叉树、N叉树先序、中序、后序、BFS、DFS遍历的递归和迭代实现记录(Java版)
    SpringCloud Openfeign Get请求服务传递对象的报400 Post not support的错误解决办法
    掌握 Promise 的逻辑方法
    JavaScript的执行上下文,真没你想的那么难
    一套标准的ASP.NET Core容器化应用日志收集分析方案
    在IIS中部署前后端应用,多么痛的领悟!
    吐槽一下Abp的用户和租户管理模块
    ant-design-vue中tree增删改
    微服务下的注册中心如何选择
  • 原文地址:https://www.cnblogs.com/happlyonline/p/5237520.html
Copyright © 2011-2022 走看看