Последовательное переименование листов - VBA

Узнай цену своей работы

Формулировка задачи:

Приветствую! Имеется макрос:
Работает корректно: переименовывает лист в книге2 как лист в книге1 и добавляет лист в книгу2. Однако при запуске с помощью макроса:
выводится ошибка "1004": "Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки или книги, на которую ссылается VBA" Причём ошибка выходит после того как один раз выполнен макрос "переименовать". Что должно получиться: При запуске макрос копирует наименование листа 1 в книге 1 и заменяет наименование листа в книге 2 на наименование листа 1 книги 1, затем создает в книге 2 лист 2. Переходит в книге 1 на лист 2 и процедура повторяется. Так происходит до последнего листа в книге 1. Просьба помочь решить данную проблему.

Решение задачи: «Последовательное переименование листов»

textual
Листинг программы
Option Explicit
 
Sub tt()
    Dim wb1 As Workbook, wb2 As Workbook, sh As Worksheet
 
    Set wb1 = Workbooks("НаименованиеКниги1.xls")
    Set wb2 = Workbooks("НаименованиеКниги2.xls")
 
    For Each sh In wb1.Worksheets
        If Not SheetExists(wb2, sh.Name) Then
            With wb2: .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = sh.Name: End With
            Call Пересобрать(sh, wb2.Sheets(sh.Name))
        End If
    Next
 
End Sub
 
Function SheetExists(wb As Workbook, SheetName As String) As Boolean
    On Error Resume Next
    SheetExists = Not wb.Sheets(SheetName) Is Nothing
End Function
 
 
Sub Пересобрать(sh1 As Object, sh2 As Object)
    sh2.[a1:cv100].Formula = sh1.[a1:cv100].Formula 'тут диапазон нужно бы определять динамически...
 
    sh1.Cells.Copy
    sh2.Cells.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                           SkipBlanks:=False, Transpose:=False
    sh2.Cells.PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
                           SkipBlanks:=False, Transpose:=False
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы