Excel VBA:批量重命名图纸
有没有办法在VBA中批量重命名图纸: 比如:Excel VBA:批量重命名图纸,excel,vba,Excel,Vba,有没有办法在VBA中批量重命名图纸: 比如: sheets(array(1, 2, 3)).name = array("hep", "hey", "heppa!") 将第1、2、3页命名为“hep”、“hey”和“heppa!” 很明显,它不能直接起作用 而一些实验并没有导致任何结果 这是我能得到的最接近的结果,其他人可能会找到跳过循环的方法 [更新了我将在下面执行此操作的标准方法,包括错误处理-我以前从未尝试过设置这样的工作表集合] 正常代码 Sub Normal() Dim st
sheets(array(1, 2, 3)).name = array("hep", "hey", "heppa!")
将第1、2、3页命名为“hep”、“hey”和“heppa!”- 很明显,它不能直接起作用
- 而一些实验并没有导致任何结果
正常代码
Sub Normal()
Dim strShtOld()
Dim strShtNew()
Dim sht As Worksheet
Dim lngSht As Long
strShtNew = Array("hep", "hey", "heppa!")
strShtOld = Array("Sheet1", "Sheeta2", "Sheet3")
On Error Resume Next
For lngSht = LBound(strShtOld) To UBound(strShtOld)
Set ws = Nothing
Set ws = Sheets(strShtOld(lngSht))
If Not ws Is Nothing Then ws.Name = strShtNew(lngSht)
Next lngSht
End Sub
为什么要批量重命名,好奇,或者你有这么多的重命名要做,以至于你关心代码运行时
阵列工作
Sub ArrayEx()
Dim varShts
Dim varSht
Dim strArray()
strArray = Array("hep", "hey", "heppa!")
Set varShts = Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
For varSht = 1 To varShts.Count
varShts(varSht).Name = strArray(varSht - 1)
Next
End Sub
我创建了一对宏: 宏1:
Sub Sheetlist()
Dim x As Integer
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = "sheetlist"
Range("A1").Select
ActiveCell.FormulaR1C1 = "Sheet List"
Range("C1").Select
ActiveCell.FormulaR1C1 = "New List"
For x = 1 To Worksheets.Count
Cells(x + 1, 1).Value = Worksheets(x).Name
Next x
End Sub
此宏在当前工作簿中创建一个名为“sheetlist”的工作表,其中包含当前工作簿中所有工作表的列表。此工作表还有一个标题为“新建列表”(C1)的列,您可以输入任意多个要重命名的工作表名称
现在可以做的是从列A1中删除要从重命名过程中排除的名称。确保A列和C列中没有空格,并且A列和C列中的名称数也匹配
现在,您可以运行第二个宏了:
Sub batchrename()
'
' batchrename Macro
'
Dim OldSheetName As String
Dim NewSheetName As String
Dim SheetCount As Integer
Dim NewSheetList As String
NewSheetList = InputBox("How many names are there?") + 1
For SheetCount = 1 To Range("C2:C" & NewSheetList).Count
OldSheetName = Sheets("sheetlist").Cells(SheetCount + 1, 1)
NewSheetName = Sheets("sheetlist").Cells(SheetCount + 1, 3)
Sheets(OldSheetName).Select
ActiveSheet.Name = NewSheetName
Next SheetCount
End Sub
此宏将转到sheetlist A中列出的名称,并将其更改为sheetlist C中列出的名称。提示将询问名称列表的位置,输入C列中的名称数,然后按enter键
享受这就是我最后要做的,除了我不完全确定数组赋值速记+1这是完全可选的,但你也可以重拨strArray并使其基于一,这样你就不需要在循环中从中减去一。