手動雙擊分頁標籤重命名,十張還好,五十張就崩潰。VBA 幾行代碼即可批量依序號、日期、前綴、清單重命名,並支援錯誤處理(重名、非法字元)。
Sub RenameSheetsSequential()
Dim i As Long
On Error Resume Next
For i = 1 To Sheets.Count
Sheets(i).Name = CStr(i)
Next i
On Error GoTo 0
End Sub


Sub RenameSheetsAdvanced()
Dim ws As Worksheet
Dim prefix As String, startNum As Long, stepVal As Long
Dim counter As Long
prefix = InputBox("輸入前綴 (如 '月報_', 留空無前綴):", "批量重命名", "Sheet_")
If StrPtr(prefix) = 0 Then Exit Sub ' 取消
startNum = Val(InputBox("起始編號:", "批量重命名", 1))
stepVal = Val(InputBox("遞增步長:", "批量重命名", 1))
If stepVal = 0 Then stepVal = 1
counter = startNum
Application.ScreenUpdating = False
On Error Resume Next
For Each ws In Worksheets
If ws.Visible = xlSheetVisible Then ' 只重命名可見表
ws.Name = prefix & counter
counter = counter + stepVal
End If
Next ws
If Err.Number <> 0 Then
MsgBox "重命名失敗,可能有重名或非法字元: " & Err.Description, vbExclamation
End If
On Error GoTo 0
Application.ScreenUpdating = True
End Sub
| 需求 | 核心代碼片段 |
|---|---|
| 依 A1 儲存格值命名 | ws.Name = Left(ws.Range("A1").Value, 31) |
| 依清單命名 (範圍 SourceList) | ws.Name = Range("SourceList").Cells(i).Value |
| 加日期後綴 | ws.Name = ws.Name & "_" & Format(Date, "yyyymmdd") |
| 移除非法字元 | Replace(Replace(name, "\", ""), "/", "") 等 |
\ / ? * [ ] :善用 VBA 批量重命名,配合命名規範,讓百張分頁也能井然有序、秒級定位。