Excel VBA:批量重命名工作表

有没有办法在VBA中批量重命名表格:

就像是:

sheets(array(1, 2, 3)).name = array("hep", "hey", "heppa!") 

将片材1,2,3命名为“hep”,“hey”和“heppa!”

  • 显然它不直接工作
  • 而对于SelectedSheets的一些实验并没有带来什么结果

这是尽可能接近,其他人可能会find一种方法来跳过一个循环

[更新与标准的方式,我会做到这一点,包括error handling – 我没有实际上尝试设置这样的表单集合之前]

Normal Code

 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 

为什么批量重命名,好奇还是你做了这么大的重命名操作,你关心的是代码运行时?

Array Effort

  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 

我创build了一对macros:

macros1:

 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 

该macros在当前工作簿中创build一个名为“sheetlist”的工作表,其中包含当前工作簿中所有工作表的列表。 该表格还有一个标题为“新build列表”(C1)的列,您可以input想要重命名的表格名称。

你现在可以做的是消除你想从重命名过程中排除的列A1的名称。 确保列A和C中没有空格,并且A和C中的名称数也匹配。

现在你已经准备好运行第二个macros:

 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 

这个macros将转到工作表A中列出的名称,并将它们更改为工作表C中列出的名称。提示将询问您名单列表的位置,inputC列中的名称数量,然后按Enter键。

请享用