有100个工作簿,每个工作簿里就一张工作表,每个工作表的名字叫“历史”。现在要求把这100个工作簿里的每个工作表名字改为“当前工作簿的名字+历史表”。比如某个工作簿名字是“北京”,这个工作簿里的那个工作表就改名为“北京历史表”。
因为工作簿有很多,一个一个打开工作簿,再右键重命名工作表,速度特别慢。下面用一段代码瞬间就能完成。看不懂没关系,直接照着用也是不错的。
1
新建一个空白工作簿,alt+f11,插入,模块,把下面的代码粘贴到模块1右边的窗口里。然后关闭vba编辑窗口。F12另存工作簿为xlsm格式。带这段代码的宏工作簿,和那些待改名的工作簿放在同一个文件夹里。
Sub 改名()
Dim str, Filename, wb, sht, xx, dic
Dim rng As Range, firstadd, myfname
Dim mypath As String
Set dic = CreateObject("Scri;)
A = False
A = False
mypath = Le, InStrRev, "\"))
myfname = Dir(mypath & "*.xlsx")
Do While myfname <> ""
If myfname <> T Then
dic(mypath & myfname) = ""
End If
myfname = Dir
Loop
For Each xx In dic.keys
Set wb = Workbooks.Open(xx)
With wb
For Each sht In .Worksheets
= Left(.Name, Len(.Name) - 5) & "历史表"
Next
End With
wb.Save
wb.Close
Next
A = True
A = True
End Sub
2
按Alt+F8调取宏窗口,选择“改名”宏,执行。几秒钟后,就完成了所有工作簿的改名。