具体步骤:

按Alt+F11,打开VBA编辑器,在代码窗口中粘贴代码。
然后关闭VBA编辑器,返回Excel界面,然后按Alt+F8打开“宏”对话框,选择对应宏执行即可。 
这四段代码大同小异,实现不同功能本质上只替换代码主体即可。
以下代码将每个所选的工作表单独保存为一个工作簿,存放位置与原工作簿路径相同,名称为“工作表名称.xlsx”。

1、保存全部表格,保留全部格式

Sub Save_All()Dim Sh As WorksheetDim wb As WorkbookDim cPath$cPath = ThisWorkbook.Path & "\"Application.ScreenUpdating = FalseApplication.EnableEvents = FalseApplication.DisplayAlerts = False
' ----------------------------------------- 代码主体 -----------------------------------------For Each sht In ThisWorkbook.Worksheetssht.CopytheName = sht.Name & ".xlsx"ActiveWorkbook.SaveAs Filename:=cPath & "\" & theName, FileFormat:=xlNormalActiveWindow.CloseNext
' ----------------------------------------- 代码主体 -----------------------------------------Application.EnableEvents = TrueApplication.ScreenUpdating = TrueApplication.DisplayAlerts = True
End Sub

2、保留特定表格,保留全部格式

Sub Save_Special_Sheet()Dim Sh As WorksheetDim wb As WorkbookDim cPath$cPath = ThisWorkbook.Path & "\"Application.ScreenUpdating = FalseApplication.EnableEvents = FalseApplication.DisplayAlerts = False
' ----------------------------------------- 代码主体 -----------------------------------------Sheets("特定表格1").SelecttheName = "特定表格1.xlsx"ActiveWorkbook.SaveCopyAs cPath & "\" & theNameSheets("特定表格2").SelecttheName = "特定表格2.xlsx"ActiveWorkbook.SaveCopyAs cPath & "\" & theName
'   ........
' ----------------------------------------- 代码主体 -----------------------------------------Application.EnableEvents = TrueApplication.ScreenUpdating = TrueApplication.DisplayAlerts = True
End Sub

3、保留选中的表格,保留格式

执行代码前,需要将光标移至EXCEL底栏工作区,选择单独保存为工作簿的工作表。如果要选择多个工作表,可按Ctrl键或Shift键进行选择。

Sub Save_Select_Sheet()Dim Sh As WorksheetDim wb As WorkbookDim cPath$cPath = ThisWorkbook.Path & "\"Application.ScreenUpdating = FalseApplication.EnableEvents = FalseApplication.DisplayAlerts = False
' ----------------------------------------- 代码主体 -----------------------------------------For Each sht In ActiveWindow.SelectedSheetssht.CopytheName = sht.Name & ".xlsx"ActiveWorkbook.SaveAs Filename:=cPath & "\" & theName, FileFormat:=xlNormalActiveWindow.CloseNext
' ----------------------------------------- 代码主体 -----------------------------------------Application.EnableEvents = TrueApplication.ScreenUpdating = TrueApplication.DisplayAlerts = True
End Sub

4、保存全部表格,不保留分表格式

Sub Save_All_Sheet_Value()Dim Sh As WorksheetDim wb As WorkbookDim cPath$, cFile$, nR1&, nR2&, Arr()cPath = ThisWorkbook.Path & "\"Application.ScreenUpdating = FalseApplication.EnableEvents = FalseApplication.DisplayAlerts = FalseFor Each Sh In WorksheetsnR1 = Sh.Range("a1048576").End(xlUp).RowIf nR1 > 1 ThenArr = Sh.Range("a2:z" & nR1).ValuecFile = Dir(cPath & Sh.Name & ".*")If cFile = "" ThenSet wb = Workbooks.AddWith wb.Sheets(1).Name = "汇总".SaveAs cPath & Sh.NameEnd WithElseWorkbooks.Open cPath & cFileSet wb = Workbooks(cFile)End IfWith wb.Sheets("汇总")nR2 = .Range("a1048576").End(xlUp).Row + 1.Range("a" & nR2).Resize(nR1 - 1, 26).Value = ArrIf .Range("a1").Value = "" ThenArr = Sh.Range("a1:z1").Value.Range("a1:z1").Value = ArrEnd IfEnd Withwb.Close (True)End IfNexApplication.EnableEvents = TrueApplication.ScreenUpdating = TrueApplication.DisplayAlerts = True
End Sub

5、创建操作工作表,在另存为工作簿时不对该表进行操作。

主要就是在原有代码上加功能,表识别以Me.name开头。以代码4为例。
新建“汇总”表并创建宏按钮:

打开VB编辑窗口,将代码复制到“Sheet6(汇总)”表中,如下

Sub Save_All_Sheet_Value()Dim Sh As WorksheetDim wb As WorkbookDim cPath$, cFile$, nR1&, nR2&, Arr()cPath = ThisWorkbook.Path & "\"Application.ScreenUpdating = FalseApplication.EnableEvents = FalseApplication.DisplayAlerts = False
' ----------------------------------------- 代码主体 -----------------------------------------For Each Sh In WorksheetsIf Sh.Name <> Me.Name ThennR1 = Sh.Range("a1048576").End(xlUp).RowIf nR1 > 1 ThenArr = Sh.Range("a2:z" & nR1).ValuecFile = Dir(cPath & Sh.Name & ".*")If cFile = "" ThenSet wb = Workbooks.AddWith wb.Sheets(1).Name = "汇总".SaveAs cPath & Sh.NameEnd WithElseWorkbooks.Open cPath & cFileSet wb = Workbooks(cFile)End IfWith wb.Sheets("汇总")nR2 = .Range("a1048576").End(xlUp).Row + 1.Range("a" & nR2).Resize(nR1 - 1, 26).Value = ArrIf .Range("a1").Value = "" ThenArr = Sh.Range("a1:z1").Value.Range("a1:z1").Value = ArrEnd IfEnd Withwb.Close (True)End IfEnd IfNext
' ----------------------------------------- 代码主体 -----------------------------------------Application.EnableEvents = TrueApplication.ScreenUpdating = TrueApplication.DisplayAlerts = True
End Sub

6、选择是否要清楚原表数据

生成新的子表后会弹出选项“已生成新子表。清除各工作表数据吗?”

Sub Ask_Delete()Dim Sh As WorksheetDim wb As WorkbookDim cPath$, cFile$, nR1&, nR2&, Arr()cPath = ThisWorkbook.Path & "\"Application.ScreenUpdating = FalseApplication.EnableEvents = FalseApplication.DisplayAlerts = False
' ----------------------------------------- 代码主体 -----------------------------------------For Each Sh In WorksheetsIf Sh.Name <> Me.Name ThennR1 = Sh.Range("a1048576").End(xlUp).RowIf nR1 > 1 ThenArr = Sh.Range("a2:z" & nR1).ValuecFile = Dir(cPath & Sh.Name & ".*")If cFile = "" ThenSet wb = Workbooks.AddWith wb.Sheets(1).Name = "汇总".SaveAs cPath & Sh.NameEnd WithElseWorkbooks.Open cPath & cFileSet wb = Workbooks(cFile)End IfWith wb.Sheets("汇总")nR2 = .Range("a1048576").End(xlUp).Row + 1.Range("a" & nR2).Resize(nR1 - 1, 26).Value = ArrIf .Range("a1").Value = "" ThenArr = Sh.Range("a1:z1").Value.Range("a1:z1").Value = ArrEnd IfEnd Withwb.Close (True)End IfEnd IfNext
' ----------------------------------------- 代码主体 -----------------------------------------If MsgBox("已生成新子表。清除各工作表数据吗?      ", 36, "提示") = 6 ThenFor Each Sh In WorksheetsIf Sh.Name <> Me.Name Then Sh.Range("a2:z1048576").ClearContentsNextThisWorkbook.SaveEnd If
End Sub

参考:

1、Excel VBA-批量将多个sheet表另存为单独的工作薄文件,Crystal_Data

Excel VBA小程序01-将多个sheet表另存为单独的工作薄文件并清除原表数据相关推荐

  1. Excel VBA-批量将多个sheet表另存为单独的工作薄文件

    将excel多个工作表另存为单独的工作薄 工作中为了方便,我们常常将多个数据类似的表放在同一个工作薄,但是如果要对每个文件执行相同的转换或处理,需要用R或Python读取每张表的数据,这时就要将其拆分 ...

  2. Excel VBA小程序03-快速提取单元格中的数字和非数字

    0.表格内容 A列 B列 手机2134 型号324 2135手机 325型号 2手机136 32型号6 1.Word法 1.1 提取非数字 遇事不决就去隔壁找Word,将表格A列内容复制到Word中, ...

  3. Excel VBA小程序-如何快速将整个工作簿的公式转换为数值

    根据操作范围,这可以分为三种情况. ❶多工作表公式转数值 ❷多工作簿公式转数值 1.多工作表公式转数值 如果是将当前工作簿所有工作表的公式转换为数值,需要使用到VBA代码. Sub FunctionT ...

  4. Excel VBA小程序 -批量合并和撤销合并单元格

    合并单元格之前要提前将数据列排序好,然后再复制以下代码,运行宏程序. 批量合并单元格 Sub RngMergeCondition() '批量合并单元格Dim rngUser As RangeDim r ...

  5. Excel VBA 小程序 - 文本型数字转为数值型数字

    实现功能:选中当前工作表中的所有数据内容,将文本型数字转换为数值型数字. 缺点:日期格式的字符串会变成数值 Sub 转数值型数字() With ActiveSheet.UsedRange.Number ...

  6. VBA小程序--针对所有已经打开的Excel文件_格式调整_针对所有工作表_冻结首行_无视所在位置

    VBA小程序--针对所有已经打开的Excel文件_格式调整_针对所有工作表_冻结首行_无视所在位置 Function 格式调整_针对所有工作表_冻结首行_无视所在位置()Dim sht As Work ...

  7. wps vba模块压缩包_01_创建第一个VBA小程序:你好,世界

    大家好,我是一可赛二(Excel),EXCEL VBA爱好者,在这里分享我学习VBA的过程. 目录 第一节 什么是EXCEL VBA(宏) 第二节 在EXCEL界面上调出"开发工具" ...

  8. VBA小程序_对于选中的单元格进行取消合并_选择空值向上填充

    Sub VBA小程序_对于选中的单元格进行取消合并_选择空值向上填充()Dim a As RangeSet a = Selection '定义变量为最初选择的区域,不忘初心Selection.UnMe ...

  9. VBA小程序_遍历所有工作表_复制粘贴为数值

    Sub VBA小程序_遍历所有工作表_复制粘贴为数值()Dim sht As WorksheetFor Each sht In Worksheetssht.Activatesht.Cells.Copy ...

最新文章

  1. go 实现 kafka 消息发送、接收
  2. linux中tomcat修改错误日志路径
  3. 服务器异常下电文件系统,SUN服务器Solaris异常情况下恢复操作步骤(8页)-原创力文档...
  4. Android 任意区域截屏
  5. 在阿里云 ECS 上试图安装 SAP Commerce Cloud 的 137 错误
  6. angular5 接口跨域请求配置
  7. 更多 Kinect for Windows 项目揭示
  8. python压缩算法_LZ77压缩算法编码原理详解(结合图片和简单代码)
  9. python中的常量可以修改吗_深入理解Python变量与常量
  10. 从业回忆录,最后悔的事
  11. mc有什么红石机器人_我的世界10月考试!来测测你的MC成绩吧~
  12. 这才是JAVA中打印日志的正确姿势
  13. Java 14 来了!
  14. ❤️《微服务开发—Swagger》(建议收藏)
  15. Linux驱动模块Makefile编写
  16. SSM汽车维修中心管理系统
  17. EPSON机械手视觉操作手册
  18. 美国德保罗大学计算机排名,2018福布斯美国最佳大学排名德保罗大学排名第243...
  19. 点歌机显示歌库服务器未能连接,快速解决常见的六种KTV点歌设备突发故障
  20. MySQL——数据库

热门文章

  1. 基于图的异常检测算法——概述
  2. 时钟同步问题:warning: Clock skew detected. Your build may be incomplete.
  3. path/filepath 基本使用
  4. ps6-图层基础与操作技巧
  5. 互联网-手机圈那些事
  6. bump version
  7. 6.实现 Callable 接口
  8. linux下使用Mongodb命令笔记
  9. whileuntil循环详解
  10. 关于装箱拆箱为什么会影响效率