Excel VBA: пакетное переименование листов - PullRequest
1 голос
/ 30 декабря 2011

Есть ли способ пакетного переименования листов в VBA:

Что-то вроде:

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

с именами листов 1, 2, 3 как "hep", "hey" и "heppa"! "

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011
  • Очевидно, что это не работает напрямую
  • И некоторые эксперименты с SelectedSheets не привели ни к чему

Это так близко, как яможет получить это, кто-то другой может найти способ пропустить цикл

[Обновлен стандартным способом, как я сделал бы это ниже, включая обработку ошибок - на самом деле я не пытался установить коллекцию листов, какэто раньше]

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 голосов
/ 07 марта 2016

Я создал пару макросов:

Макрос 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

Этот макрос перейдет к именам, перечисленным в списке листов A, и изменит их на имена, перечисленные в списке листов C. В запросе будет указано, где находится список имен, введите количество имен в столбце C и нажмите клавишу ввода..

Наслаждайтесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...