在日常工作中,若需要将一个包含多个工作表的 Excel 文件拆分成多个独立的文件,手动复制粘贴会非常繁琐,尤其是工作表数量较多的情况下。这时,我们可以借助 VBA 代码来高效地完成此项任务,以下是具体的操作步骤及代码解析:

步骤一、打开 VBA 代码窗口

首先,打开需要进行工作表拆分操作的 Excel 表格。接着,点击【开发工具】选项卡(如果 Excel 界面中没有显示【开发工具】选项卡,可以通过 Excel 的设置选项将其调出,一般在 “文件 - 选项 - 自定义功能区” 中勾选【开发工具】使其显示出来),然后选择【Visual Basic】按钮,另外,也可以使用快捷键 Alt F11 来打开 VBA 代码窗口。这个窗口就是我们后续输入和运行代码的操作界面。

excel中使用VBA代码将一张总表拆分成多张独立表-趣帮office教程网

步骤二、输入 VBA 代码

在打开的 VBA 窗口中,能看到左侧有一个列表,在其中找到【ThisWorkbook】并点击它,这一步是确定代码放置的位置,以便后续正确运行代码作用于当前工作簿。接着,在对应的代码编辑区域输入以下代码

Sub 拆分工作表()
Dim i
Dim sht As Worksheet
Application.DisplayAlerts = False
For Each sht In Sheets
sht.Copy
i = ThisWorkbook.Path & "" & sht.Name & ".xlsx"
ActiveWorkbook.SaveAs i
ActiveWorkbook.Close
Next
Application.DisplayAlerts = True
MsgBox "工作表生成文件完成!", vbOKOnly, "提示"
End Sub

excel中使用VBA代码将一张总表拆分成多张独立表-趣帮office教程网

Sub 拆分工作表():这是定义一个名为 “拆分工作表” 的子过程,也就是我们这个代码要执行的具体操作任务的名称,后续通过运行这个子过程来启动工作表拆分的相关操作。

Dim i:声明一个变量 i,用于后续存储文件路径等相关信息,不过这里没有明确指定变量类型,在实际更严谨的编程中可以根据具体用途明确类型,比如如果用于存储字符串路径,可声明为 Dim i As String

Dim sht As Worksheet:声明变量 sht 为 Worksheet 类型,它将用于代表工作簿中的每个工作表,方便后续对每个工作表进行操作。

Application.DisplayAlerts = False:这行代码的作用是关闭 Excel 的提示框显示。因为在后续操作中,比如保存文件等操作可能会弹出一些提示信息,关闭提示框显示可以让代码自动运行,避免因提示框等待人工确认而中断代码执行。

For Each sht In Sheets:这是一个循环结构,意思是对于当前工作簿中的每一个工作表(由 Sheets 表示工作簿中所有工作表的集合),都会执行下面缩进的代码块内的操作,也就是依次对每个工作表进行处理。

sht.Copy:将当前遍历到的工作表进行复制操作,相当于创建了一个该工作表的副本,为后续保存成独立文件做准备。

i = ThisWorkbook.Path & "" & sht.Name & ".xlsx":这行代码是构建要保存的副本文件的完整路径及文件名。ThisWorkbook.Path 获取当前工作簿所在的文件夹路径,sht.Name 获取当前工作表的名称,通过连接符号 & 将它们组合起来,并添加文件扩展名 .xlsx,最终形成一个完整的文件保存路径赋值给变量 i

ActiveWorkbook.SaveAs i:将当前处于活动状态的工作簿(也就是前面复制得到的工作表副本对应的工作簿)按照变量 i 所指定的路径和文件名进行保存操作。

ActiveWorkbook.Close:关闭当前处于活动状态的工作簿,也就是刚刚保存完的那个工作表副本对应的工作簿,释放内存资源,准备处理下一个工作表。

Next:表示循环结束,回到 For Each 那一行继续判断是否还有未处理的工作表,如果有则继续循环执行上述操作,直到所有工作表都处理完毕。

Application.DisplayAlerts = True:在所有工作表拆分并保存完成后,重新打开 Excel 的提示框显示,恢复到正常的 Excel 操作提示状态。

MsgBox "工作表生成文件完成!", vbOKOnly, "提示":弹出一个消息框,显示 “工作表生成文件完成!” 的提示信息,告知用户代码执行完毕,工作表拆分操作已经成功完成了,其中 vbOKOnly 表示消息框只显示一个 “确定” 按钮,点击 “确定” 按钮后消息框关闭。

步骤三、运行代码

在输入完代码后,找到 VBA 窗口上方的【运行】按钮并点击它,代码就会开始执行,按照代码中设定的逻辑,对工作簿中的每个工作表进行复制、保存为独立文件以及关闭副本工作簿等操作。

excel中使用VBA代码将一张总表拆分成多张独立表-趣帮office教程网

步骤四、查看结果

当代码运行执行结束后,我们可以切换到相应的文件夹下查看(也就是当前 Excel 工作簿所在的文件夹),会发现每个工作表都已经被拆分成了一个独立的文件,并且这些文件都保存在同一个文件夹内,方便我们后续对这些拆分后的文件进行单独使用、分享或者进一步的数据处理等操作。

excel中使用VBA代码将一张总表拆分成多张独立表-趣帮office教程网

通过以上步骤,利用这段 VBA 代码就能轻松高效地将 Excel 文件中的多个工作表拆分成单独的文件,避免了手动操作的繁琐,大大提高了工作效率。不过在运行 VBA 代码前,建议先备份好原 Excel 文件,以防出现意外情况导致数据丢失等问题。