VBA在Excel中的应用——用VBA将同一工作簿中不同工作表拆成独立文件

VBA在Excel中的应用

  • 用VBA将同一工作簿中不同工作表拆成独立Excel文件
    • 问题描述
    • 1.在“开发工具”选项卡中选择”Visual Basic”
    • 2.插入模块
    • 运行结果
    • 可能存在的问题

用VBA将同一工作簿中不同工作表拆成独立Excel文件

问题描述

有一个银行询证函的excel文件,里面包含了数十家公司总计一百多个的银行账户,每个银行账户都需要建立一份银行询证函,因此这份文件(即一个工作簿)中实际有近两百份的工作表,一个工作表就有可能是一份银行询证函,需要将每一个工作表都需要提取出来单独成立一份文件。由于数量众多,用VBA可以更快更有效率。
数量众多的工作表

1.在“开发工具”选项卡中选择”Visual Basic”

VBA在Excel中的应用——用VBA将同一工作簿中不同工作表拆成独立文件_第1张图片

2.插入模块

VBA在Excel中的应用——用VBA将同一工作簿中不同工作表拆成独立文件_第2张图片
写入如下VBA代码:

Sub saveworkbook()                                   '将sheet工作表批量另存为独立的工作簿,并命名成sheet表的名称

Application.ScreenUpdating = False                   '关闭屏幕更新

Dim ff As String                                     '定义字符变量                

ff = ThisWorkbook.Path &"\new"                       '指定建立新的工作簿保存到的路径

If Len(Dir(ff, vbDirectory)) = 0 Then MkDir ff       '如果new文件夹不存在,就新建文件夹;mkdir用来新建文件夹

Dim st As Worksheet                                  '定义工作表变量                             

For Each st In Worksheets                            '遍历所有的sheet工作表

  st.Copy                                            '拷贝sheet工作表到新的工作簿,即将工作表另存为新的文件。

  ActiveWorkbook.SaveAs ff & "\" & st.Name &".xlsx"  '保存工作簿,并命名成工作表的名称

  ActiveWorkbook.Close                               '关闭工作表

  Next                                               '执行遍历循环体

Application.ScreenUpdating = True                    '开启屏幕更新

End Sub

注:在执行前要确保没有隐藏工作表,否则会提示错误:方法’Copy’作用于对象’_Worksheet’时失败

VBA在Excel中的应用——用VBA将同一工作簿中不同工作表拆成独立文件_第3张图片

运行结果

新生成文件夹:
新生成文件夹
打开后:
VBA在Excel中的应用——用VBA将同一工作簿中不同工作表拆成独立文件_第4张图片
里面就是之前工作簿中所有的工作表拆分出来各自形成单独的工作簿。

可能存在的问题

但实际情况可能不会这么简单,假如原工作簿大量使用了公式,而且是不同工作表之间存在数据耦合,那么直接拆解成独立文件后再打开很可能出现如下情况:
VBA在Excel中的应用——用VBA将同一工作簿中不同工作表拆成独立文件_第5张图片
这就需要将所有涉及到公式的地方全部只保留值。具体操作详见我的另一篇博文:
VBA在Excel中的应用——用VBA将所有工作表去公式并保留原显示格式

你可能感兴趣的:(vba,excel,办公软件)