这是前段时间写得一个批量改工作表名的代码,你可以试一下。新建一个模块,把代码粘贴在里面。在工作表建个命令按钮,指定该宏就可以试用啦。
Sub 批量改名()
Dim i As Integer, day1, mon As String, ss As Integer, s As String, uu
Dim sh As Worksheet, arr(), x As Integer, k, pp As Integer, vv As Integer
Dim d As Object
Dim Msg, Style, Title, Response
Msg = "按日期命名工作表吗?" ' 定义信息。
Style = vbYesNoCancel ' 定义按钮。
Title = "MsgBox 提示:" ' 定义标题。
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' 用户按下“是”。
mon = Month(Date)
day1 = WorksheetFunction.EOMONTH(Day(Now()), 0)
ReDim arr(1 To day1)
For ss = 1 To day1
arr(ss) = ss
Next
GoTo 100
ElseIf Response = vbCancel Then ' 用户按下“取消”。
Exit Sub
Else
mon = InputBox("请输入工作表名,系统会自动添加序号", "提示!!!")
If mon <> 0 And mon <> "" Then
day1 = Worksheets.Count
End If
100:
s = InputBox("请输入要保留的表名,如全部改名,请输入0", "提示!!!")
If s = "" Or s = "0" Then
MsgBox "除工具表外,其他表全部改名!"
i = 1
For Each sh In ThisWorkbook.Sheets
If sh.Name <> Trim(s) Or sh.Name <> "工具表" Then sh.Name = mon & "." & arr(i): i = i + 1
Next
Else
Set d = CreateObject("scripting.dictionary")
d.CompareMode = 1
i = 1
For Each sh In Worksheets
If sh.Name <> "工具表" Then
d(sh.Name) = ""
i = i + 1
End If
Next
uu = Split(Replace(s, ",", ",", 1), ",")
For x = 0 To UBound(uu)
If d.Exists(uu(x)) Then
d.Remove (uu(x))
End If
Next
k = d.keys
Application.DisplayAlerts = False
Application.DisplayAlerts = False
pp = UBound(arr)
If pp <> Null Then
For vv = 0 To UBound(k)
Sheets(k(vv)).Name = mon & "." & arr(vv + 1)
Next
Else
For vv = 0 To UBound(k)
Sheets(k(vv)).Name = mon & vv + 1
Next
End If
Application.DisplayAlerts = True
Application.DisplayAlerts = True
End If
End If
End Sub
欢迎到Excel Home论坛学习、交流”,谢谢!
温馨提示:答案为网友推荐,仅供参考