2011-12-30 103 views
1

是否有任何的方式在VBA批量重命名表:Excel VBA中:批次重命名表

是这样的:

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

命名片材1,2,3为 “HEP”, “嘿”,并“heppa!”

回答

2
  • 显然,这是行不通的直接
  • 而且一些试验使用SelectedSheets没有导致anywere

这是接近我能得到它,别人可能会发现一个方法来跳过循环

[更新的标准方式,我会做到这一点下面包括错误处理 - 我还没有真正尝试放置纸张的集合,这样的前]

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 
+0

那是什么,我落得这样做除了我并不完全确定数组赋值速记 – abcde123483 2011-12-30 14:07:41

+0

+1这完全是可选的,但你也可以REDIM strArray并使它一个基于这样你就止跌” t需要在循环中从它中减去一个。 – JimmyPena 2011-12-30 16:23:42

0

我已经创建了一个对宏:

微距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中的名称数量,然后按回车。

享受