首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Excel VBA将工作簿拆分为每4个工作表

的问题,可以通过以下步骤来实现:

  1. 打开Excel工作簿并按下Alt + F11打开VBA编辑器。
  2. 在VBA编辑器中,选择插入 -> 模块,创建一个新的模块。
  3. 在新的模块中,编写以下VBA代码:
代码语言:vba
复制
Sub SplitWorkbook()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim newWb As Workbook
    Dim newWs As Worksheet
    Dim i As Integer
    Dim j As Integer
    Dim sheetCount As Integer
    
    Set wb = ThisWorkbook
    sheetCount = wb.Sheets.Count
    
    ' 计算需要创建的新工作簿数量
    Dim newWbCount As Integer
    newWbCount = sheetCount / 4
    If sheetCount Mod 4 <> 0 Then
        newWbCount = newWbCount + 1
    End If
    
    ' 拆分工作簿
    For i = 1 To newWbCount
        ' 创建新的工作簿
        Set newWb = Workbooks.Add
        j = 1
        
        ' 将每4个工作表复制到新的工作簿
        While j <= 4 And (i - 1) * 4 + j <= sheetCount
            Set ws = wb.Sheets((i - 1) * 4 + j)
            ws.Copy after:=newWb.Sheets(newWb.Sheets.Count)
            j = j + 1
        Wend
        
        ' 删除新工作簿中多余的工作表
        For Each newWs In newWb.Sheets
            If newWs.Index > 4 Then
                Application.DisplayAlerts = False
                newWs.Delete
                Application.DisplayAlerts = True
            End If
        Next newWs
        
        ' 保存新工作簿
        newWb.SaveAs "路径\文件名" & i & ".xlsx" ' 替换为你想要保存的路径和文件名
        newWb.Close
    Next i
End Sub
  1. 替换代码中的"路径\文件名"为你想要保存的路径和文件名。
  2. 按下F5运行代码,工作簿将被拆分为每4个工作表的新工作簿,并保存在指定的路径中。

这个VBA代码可以将一个工作簿拆分为每4个工作表的新工作簿。它通过循环遍历工作表,并将每4个工作表复制到一个新的工作簿中。然后,它删除新工作簿中多余的工作表,并将新工作簿保存在指定的路径中。

这个方法适用于需要将大型工作簿拆分为多个较小工作簿的情况,例如将数据分发给不同的团队或将工作簿按照某种方式进行组织和管理。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Excel-VBA复制工作到新工作簿方法

工作中我们常常会在一个工作簿的一个工作中输入数据,再另存为一个新的工作簿。 如:在文件“自动工具.xlsx”中有一个工作为“模板”。...我想在“模板”工作中输入数据,再另存为一个新的文件为“小龙女.xlsx” 【知识点】 下面是本个收藏的代码,三种方法,以备用 【代码】 '方法一:复制工作另存为新的工作簿 Sub copySaveAs...Filename:=ThisWorkbook.Path & "\小龙女.xlsx" ActiveWorkbook.Close SaveChanges:=True End Sub '方法二:复制工作为新的工作...,写入数据,再移动工作另存为新的工作簿 Sub MoveSaveAs() wsh_num = Worksheets.Count Worksheets("模板").Copy After:...,再复制工作到新工作簿中 Sub AddCopySaveAs() Path = ThisWorkbook.Path & "\" Set newwb = Workbooks.Add

9.6K40

VBA代码:拆分工作簿示例——工作簿中的每个工作保存为单独的工作簿

标签:VBA 有时候,我们想将工作簿中的每个工作都保存为一个单独的工作簿。 你可以使用下面的操作逐个保存工作: 1.在工作标签中单击右键。 2.选取“移动或复制…”命令。...3.选择“(新工作簿)”。 4.保存该工作簿。 图1 这样,有多少工作,你就要操作上面的步骤多少次。 然而,如果存在很多个工作簿,这样的重复工作使用VBA是最合适的。...msoFileDialogFolderPicker) .InitialFileName =Application.DefaultFilePath & "\" .Title = "选择保存工作的位置...Next wks Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 只需在要拆分的工作簿中运行上述代码...,就可将该工作簿中的所有工作全部保存为单独的工作簿

3.8K10

VBA实例一、工作簿拆分成多个工作簿

大家好,本节主要介绍,通过VBA程序,单个工作簿中的多个工作,按拆分成多个独立工作簿。...效 果 演 示 一个工作簿中有多个工作每个工作拆分成独立的工作簿,生成的工作簿名称为原工作名称,保存至原文件路径下,演示效果如下: V B A 代 码 思路是通过for each循环,将该工作簿中的每个表格对象赋值给...sht变量,在循环中复制sht变量,将其另存为工作簿文件。...保存至原工作簿的路径下,工作簿的名称为原工作的名称,另存完毕后关闭,最后msgbox弹窗提示完成。 为了提高代码效率,关闭屏幕更新。...代码如下: Sub 拆分工作() '定义变量并赋值 Dim Sht As Worksheet Dim MyBook As Workbook Set MyBook = ThisWorkbook '关闭屏幕更新

3.1K30

VBA: 多个工作簿的第一张工作合并到一个工作簿

文章背景: 在工作中,有时需要将多个工作簿进行合并,比如多份原始数据附在报告之后。...一般的操作方法是打开两个工作簿(目标工作簿和待转移的工作簿),然后选中需要移动的工作,右键单击以后选择“移动或复制”。接下来在新的对话框里面进行设置。 这种方法适合在移动少量工作的时候使用。...在目标工作簿内,插入一个模块,然后导入如下的代码: Option Explicit Sub MergeWorkbook() '多个工作簿的第一张工作合并到目标工作簿中...End Sub (1) 目标工作簿和待转移的工作簿放在同一个文件夹内; (2)上述代码要实现的功能是,将同一个文件夹内所有工作簿(目标工作簿除外)的第一张工作拷贝到目标工作簿内,并将名设置为拷贝前所属的工作簿名称...转移前: 转移后: 参考资料: [1] 如何使用Excel VBA多个工作簿的全部工作合并到一个工作簿中(https://zhuanlan.zhihu.com/p/76786888)

5.3K11

一个工作分为多个工作

最近已经不止一次被人问到:怎么一个工作分为多个工作?...一般这样的需求,是因为1-12月的数据写在了一个工作上,而现在又想将它拆分为12个单独的工作,每个工作表单独一个月份.总结了一下,文艺青年的方法有三,普通青年请直接跳到最后一个办法 数据透视 将你需要显示的字段放在数据透视中...,以表格显示显示,重复所有项目标签'这4个功能你可能在调整格式过程中需要用到 就这样,不用代码也不用函数,你就可以将你的分为N多个.接下来,就是见证奇迹的时刻: 是不是很神奇 这样操作之后,你发现那些都是数据透视...选中第一个工作,然后按住SHIFT,选中最后一个工作,这样你可以选中许多连续的工作(这时候工作簿名称后面会显示'工作组') 然后对你现在的全选,粘贴为值( 如果不需要月份,还可以删除前几行数据)...VBA代码 在开发工具中找到Visual Basic,点击打开的窗口叫VBE.

4.3K20

Excel小技巧31:引用工作工作簿

excelperfect 在使用公式时,我们可以引用不同工作甚至是不同工作簿中的单元格或单元格区域。其一般语法是: =工作名!单元格区域 或者: =[工作簿名]工作名!...单元格区域 例如,如果当前单元格在工作Sheet1,则下面的公式: =Sheet3!B2+Sheet5!B2 工作Sheet3和工作Sheet5中单元格B2的值相加。...A1+2 也可以引用不同工作簿中的单元格,例如下面的公式: =[test.xlsx]Sheet1!A1+5 引用工作簿test.xlsx中工作Sheet1的单元格A1。...同样,如果工作簿名中包含一个或多个空格,则需要在工作簿工作名前后加上单引号。例如公式: ='[mytest.xlsx]Sheet1'!...A1+5 好习惯:如果要引用其他工作工作簿,无论其名称中是否包含空格,都在引用的工作工作簿名前后添加单引号,以确保万无一失。

1.6K20

Excel实战技巧89:强制用户保护工作簿工作

学习Excel技术,关注微信公众号: excelperfect 使用VBA代码,在用户关闭工作簿时,只有设置了保护工作簿,才能正常关闭。...如果单击“是”,则要先设置工作簿保护再关闭工作簿;如果单击“否”,则直接关闭工作簿。 ? 图1 上述代码提供给用户选择是否保护工作簿,下面的代码强制用户设置保护工作簿,否则不能关闭工作簿。...Cancel = True Else MsgBox "当前工作已被保护!"...End If End Sub 上述代码是强制当前工作簿设置工作保护,你也可以使用指定的工作代替ActiveSheet,以强制必须对指定工作设置保护,否则不能关闭工作簿。...欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。 ?

88030

快速汇总多个工作簿工作中的数据(Excel工具推荐)

比方,我们有以下三个工作簿 这三个工作簿含有第一季度各品牌在各个国家的销售数据,又分为若干不等的工作。...这时候手头只有Excel,没有其他软件。最笨的办法是挨个打开这些工作簿,手动数据源串联起来,然后做数据透视。可是 1.有时候数据源过大,超出单个Excel文件承载范围,你无法串联。...可以看到 1.所有工作簿的所有工作都显示在了左侧的列表里。这个时候我们可以选择部分工作簿/工作进行汇总,也可以全选,看需求而定。此处我们全选。...3.可以看到有“插入工作簿名”,“插入工作名”按钮,这两个按钮的意思是是否需要将工作簿/工作的名称作为数据透视的字段,此处我们假设想看各月的汇总情况,因此需要点击“插入工作簿名”。...三、命令文本的粘贴 打开工具中的数据透视。点击更改数据源-链接属性,弹出以下对话框 刚才复制的代码粘贴到“命令文本“中,点“确定“。

10.6K10

隐藏工作簿中所有工作的行列标题,VBA一次搞定

标签:VBA 有时候,我们不需要看到工作中的行列标题,如下图1所示。 图1 此时,可以修改Excel设置来实现。...单击“文件——选项”,在“Excel选项”对话框中,单击左侧的“高级”选项卡,在“此工作的显示选项”中取消选取“显示行和列标题”前的勾选,如下图2所示。...图2 可以看出,这个设置只对指定的工作有效,如果要隐藏工作簿中所有工作的行列标题,则要逐个选择工作,并取消该选项的选择。 如果工作簿中有很多工作,这样的重复操作就有点浪费时间了。...下面的代码隐藏工作簿中除指定工作外的所有工作的行列标题: Sub HideHeadings() Dim wks As Worksheet Application.ScreenUpdating...= False '遍历工作簿中的工作 For Each wks In ThisWorkbook.Worksheets '名为"示例"的工作除外 '你可以修改为自己的工作

1.8K20

Excel小技巧39:工作簿藏起来

学习Excel技术,关注微信公众号: excelperfect 有时候,我们打开了多个工作簿。...我们不想关掉其中的一些工作簿,因为有可能会用到它,而这些工作簿可能来自不同的文件夹,也可能工作簿文件较大导致开启较慢,这样放在桌面上避免到处查找文件或者打开慢的影响,可供随时使用。...因此,我们可以隐藏一些不常用的工作簿。 在功能区“视图”选项卡“窗口”组中单击“隐藏”命令,如下图1所示。 ? 此时,隐藏该工作簿。而在切换不同界面时,这个隐藏的工作簿不会出现。...如果需要这个工作簿,则可以取消该工作簿隐藏。在功能区“视图”选项卡“窗口”组中单击“取消隐藏”命令,如下图2所示。 ?...欢迎关注[完美Excel]微信公众号

80710

VBA技巧:在不保护工作簿的情况下防止删除工作

标签:VBA 下面介绍一个使用少量VBA代码实现的简单实用的小技巧。 通常情况下,我们执行“保护工作簿”命令后,此时删除工作的命令变成灰色,用户就不能轻易地删除工作了。...然而,这样也不能进行插入、移动或复制工作的操作了。 如果想要在不保护工作簿的情况下防止用户删除工作,而且允许用户插入工作并对其进行重命名,也允许用户移动或复制工作,有没有什么好的方法实现?...可以使用下面的VBA代码,很简单,却很实用。..." End Sub Sub RemoveProtection() '撤销保护工作簿 ThisWorkbook.Unprotect End Sub 此时,用户再要删除该工作簿中的工作,就会弹出...的警告信息(如下图1所示),但用户仍可以在该工作簿中进行添加工作、移动或复制工作、对工作重命名等操作。 图1

1.8K30

Excel应用实践21:实现工作簿所有工作中的多值替换

学习Excel技术,关注微信公众号: excelperfect 有两个工作簿,一个工作簿中存放着要查找并替换成的文本,如下图1所示,列A中是要查找的文本,列A中查找到的文本替换成列B中相应的文本,例如...,找到的“Excel”替换成“完美Excel”。...图1 另一个工作簿中是我们要替换其文本的工作簿,我们要在该工作簿所有工作中查找上图1列A中的值并将找到的文本替成列B中的文本,如图2所示。 ? 图2 要实现的结果如下图3所示。 ?...图3 使用下面的VBA代码来完成上述任务。...选择工作簿文件后,根据上图1工作中的文本自动对该工作簿中的文本进行查找和替换操作。 ? 图4 代码的图片版如下: ?

2.9K10

VBA实用小程序52: 所有VBA模块导出到另一工作簿

学习Excel技术,关注微信公众号: excelperfect 有时候,我们觉得某工作簿中的代码很有用,想将它们移到另一工作簿中。...可以在该工作簿的每个代码模块中单击鼠标右键,在快捷菜单中,使用“导出文件”命令(如下图1所示),模块逐一导出到某个文件夹中,然后,打开想要导入模块的工作簿,在该工作簿的工程资源管理器中单击右键,选择导入文件...下面的代码一次性指定工作簿中除导出程序所在模块外的所有VBA模块导入到指定的另一工作簿: Sub ExportModule() Dim wbExport As Workbook Dim...wbImport As Workbook Dim mdlModule As VBComponent '要导出的模块所在的工作簿 Set wbExport =Workbooks(...End Sub 你可以代码中相应的工作簿名称修改为实际的工作簿名称。 程序代码的图片版如下: ?

2.6K20

Python-Excel-openpyxl-05-新建工作簿复制及新建工作

的操作 使用openpyxl模块 今天讲讲新建一个Excel文件,复制原有工作,新建工作 Part 1:示例 ?...新建一个工作簿openpyxl示例_5.xlsx,默认只含有一个工作 修改默认工作名称为首页 在首页工作A1单元格写入1 新建工作新建1 在工作簿第1个位置新建工作新建2 复制工作首页...from openpyxl import Workbook wb = Workbook() excel_address = r"E:\Coding\E_PythonWriting\Excel\openpyxl..._3 = wb.create_sheet("新建2", 0) sht_copy = wb.copy_worksheet(sht) wb.save(excel_address) 代码 ?...wb = Workbook()新建工作簿 sht = wb.worksheets[0]获取第1个工作 sht_3 = wb.create_sheet("新建2", 0),在首位创建工作新建2,从

5.4K10
领券