Excel 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

有没有办法在VBA中批量重命名图纸:

比如:

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并使其基于一,这样你就不需要在循环中从中减去一。