可使用vba批量重命名工作表:一、数组直接赋值法,定义字符串数组按索引顺序一次性赋新名称;二、读取单元格数据法,从指定区域读取名称动态重命名;三、自动编号法,按规则生成序号名称。

如果您需要在Excel中快速修改多个工作表的名称,手动逐个右键重命名效率低下且易出错。以下是通过VBA实现批量重命名工作表的几种可靠方法:
一、使用数组直接赋值法
该方法适用于已知全部新名称且数量固定的情况,通过定义字符串数组,按工作表索引顺序一次性写入新名称。
1、按 Alt + F11 打开VBA编辑器。
2、在左侧工程资源管理器中,右键点击当前工作簿名称,选择“插入” → “模块”。
3、在新建模块窗口中粘贴以下代码:
Dim newName As Variant
newName = Array("销售数据", "采购记录", "库存汇总", "客户信息")
For i = 1 To UBound(newName) + 1
If i ThisWorkbook.Worksheets(i).Name = newName(i - 1)
End If
Next i
4、将光标置于代码内任意位置,按 F5 运行。
二、从指定单元格区域读取名称法
该方法从工作表(如Sheet1)的某一列中读取新名称,自动匹配对应序号的工作表,灵活性高,便于非编程用户维护名称列表。
1、在工作簿中新建一个名为“命名清单”的工作表。
2、在A1单元格开始向下依次输入新工作表名称,例如A1输入“Q1报表”,A2输入“Q2报表”,A3输入“Q3报表”。
3、打开VBA编辑器(Alt + F11),插入新模块,粘贴以下代码:
Dim wsList As Worksheet, i As Long
Set wsList = ThisWorkbook.Worksheets("命名清单")
i = 1
Do While wsList.Cells(i, 1).Value ""
If i ThisWorkbook.Worksheets(i).Name = wsList.Cells(i, 1).Value
End If
i = i + 1
Loop
4、运行前请确认“命名清单”工作表存在且A列无空行中断。
三、基于原名称规则替换法
该方法适用于需对现有工作表名进行统一字符替换(如删除前缀、添加后缀、大小写转换等),不依赖外部输入,适合标准化命名场景。
1、打开VBA编辑器,插入新模块。
2、粘贴以下代码(示例:为所有工作表名末尾添加“_2024”):
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
On Error Resume Next
ws.Name = ws.Name & "_2024"
On Error GoTo 0
Next ws
3、若需替换特定字符,可将第三行改为:
ws.Name = Replace(ws.Name, "旧文本", "新文本")
4、注意:每次运行前建议备份文件,避免因重名触发错误导致部分工作表未重命名。
四、按文件夹内文件名同步重命名法
该方法适用于工作簿中各工作表内容分别对应某文件夹下的独立文件(如每个工作表导出为单独CSV),现需反向将工作表名与同名文件对齐。
1、确保目标文件夹路径不含中文及特殊符号,例如“C:\Reports\”。
2、在VBA编辑器中插入模块,粘贴以下代码:
Dim fso As Object, folder As Object, file As Object, i As Long
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Reports\")
i = 1
For Each file In folder.Files
If i ThisWorkbook.Worksheets(i).Name = fso.GetBaseName(file.Name)
i = i + 1
End If
Next file
3、运行前请将代码中“C:\Reports\”替换为实际文件夹路径,并确保文件数量不超工作表总数。










