Страницы: 1
RSS
Переименование листов через VBA
 
Здравствуйте!
Просьба помочь через VBA переименовать листы, так как я из этих листов макросом затем подтягиваю данные в отчет, но так как листы каждый месяц переименовываются, с подтягиванием данных проблемы...
1 вопрос: У меня имеется 5 листов.
Задача:
- переименовать 3 листа через VBA: "01", "AA 02", "BB 02" на названия, указанные в ячейках F2:H2 соответственно. Названия этих листов меняются каждый месяц на 1 цифру.
Как я понимаю, необходимо сначала подтянуть текущие наименования этих 3 листов, допустим в ячейки F1:H1, а затем макросом их переименовать.
- лист "Исходный" и "Формулы" не переименовываются, остаются без изменений, каждый месяц меняются названия только этих 3-х листов.
Я нашел на одном из формуром код, который подтягивает название активного листа в заданную ячейку:
If ActiveSheet.name <> "Формулы" Then Sheets("Формулы").Range("F1") = ActiveSheet.name
А мне необходимо, чтобы подтягивал именно из 3-х указанных листов. Может быть привязку сделать к их порядковому номеру? Листы для переименования находятс всегда со 2-го по 4-й, их количество неизменно.
2 вопрос: как затем перейти на лист, название которого указано, допустим, в ячейке F2?
Спасибо.
 
а последняя вкладка "Формулы" - обязательна?
Изменено: heso - 03.11.2016 12:26:01
 
heso, да, обязательна, на ней ссылки для макросов на другие книги, а также на ней я хотел использовать привязку к названиям листов.
Порядковый номер листа, как я вычитал, определяет через Index, но как определить с помощью него 2-й, 3-й и 4-й порядковые номера листов, так и не понял.
 
Код
Sub RenameList()
Dim Sht As Worksheet
    For Each Sht In Worksheets
      If Sht.Name <> "Формулы" And Sht.Name <> "Исходный" Then
        If Sht.Name = "01" Then Sht.Name = "03"
        If Sht.Name = "AA 02" Then Sht.Name = "AA 04"
        If Sht.Name = "BB 02" Then Sht.Name = "BB 04"
      End If
    Next
End Sub
 
пойдет?
 
Kuzmich, это не то, что требуется. Названия листов каждый месяц будут изменяться, мне нужно чтобы не было привязки к названиям листов в коде, привязка должна быть к ячейкам на листе "Формулы".
heso, не совсем так. На листе "Формулы" Новые названия листов не должны изменяться после запуска макросом, они должны оставаться неизменными, я самостоятельно буду их менять. И макрос берет из "Новые названия листов"  только данные в формате "01", "AA 02", "BB 02", как я указал и выше, это верно. А возможно ли сделать без привязки? То есть любое произвольное название в ячейки изменяет название листа?

Спасибо.
 
Код
Sub qq()
    For Each cel In [f1:h1]
        Sheets(cel.Value).Name = (cel.Offset(1).Value)
    Next
End Sub
 
RAN, макрос отлично работает в шаблоне, который я вложил, спасибо!
Однако в моем файле, где вроде бы все тоже самое, выдает ошибку: Run-time error '9': subscript out of range .
По описанию через F1 я не понял, что не так...
С чем это может быть связано?
 
Скорее всего нет Sheets(cel.Value)
 
Всем добрый день. Похожий вопрос, но решить никак не могу.
Есть несколько документов, с большим количеством листов, требуется переименовать все листы, согласно значению конкретной ячейки.

В принципе ничего сложного, был рабочий макрос, в котором четко прописан адрес ячейки из которой брать имя для листа. Сейчас появились новые документы и имена ячеек в зависимости от документа меняются. Каждый раз лезть в код и менять имя ячейки нет никакого желания.

Нужно сделать следующее. Вызвать диалоговое окно, в котором выбирается конкретная ячейка, по значению которой будет меняться имя листа. На каждом листе ячейка одна и та же, но значения в них разные.

Есть вот такой код, но применяется только на первый лист, остальные остаются без изменений
Код
Sub Rename_Sheets()
On Error Resume Next

Dim Rng As Range
  Set Rng = Application.InputBox(Prompt:="Выберите ячейку", _
                                   Title:="Заголовок", _
                                   Type:=8)
For i = 1 To Worksheets.Count
Worksheets(i).Activate
Worksheets(i).Name = Rng
Next i
  
End Sub

Помогите пожалуйста.

Ку-Ку мой мальчик!..
 
Цитата
S.K. написал:
Есть несколько документов, с большим количеством листов, требуется переименовать все листы, согласно значению конкретной ячейки
А зачем тогда вызывать диалоговое окно? Макрос может сам открыть документ, переименовать все листы и закрыть документ. Хотите?
 
Цитата
Казанский написал:
А зачем тогда вызывать диалоговое окно? Макрос может сам открыть документ, переименовать все листы и закрыть документ.
Дело в том, что изначально документ приходит в виде одного листа, с кучей данных, которые потом разбиваются на новые листы, именно их и требуется переименовать.
А диалоговое окно нужно, чтоб этот макрос работал в разных документах, т.к. в разных документах, ячейки которые надо выбрать в качестве имени листа разные.
Поясню:
Внутри одного документа, на всех листах, ячейка одна и та же, но с разным значением, а в другом документе ячейка, с будущим именем листа, имеет другое местоположение, но все так же одинаково на всех листах книги.

если есть другое решение проблемы, буду рад подсказкам и помощи :-)
Ку-Ку мой мальчик!..
 
Если на каждом листе адрес ячейки с будущим именем листа одинаков, то в Вашем макросе достаточно строку 10 изменить на
Код
Worksheets(i).Name = Range(rng.address)
Владимир
 
Спасибо большое! Все заработало.
Как говорится, а ларчик просто открывался :-)
Изменено: S.K. - 29.08.2018 17:20:56
Ку-Ку мой мальчик!..
 
Успехов! Уберите, пожалуйста, цитату в сообщении #14, а то нам влетит от модераторов. :)  
Владимир
 
Всем привет!

Не стал создавать новую тему, вопрос аналогичный
Есть папка по пути: "C:\Users\Сидоров\Desktop\Текущие задачи\Расчет", в ней эксель файлы с расширением xls, очень много, надо открыть книгу и переименовать единственный лист в название "4124" и сохранить, можно это реализовать?
 
Adamm, Конечно можно. Цикл по файлам , открыть, переименовать, записать, закрыть, следующий.
как переименовать - в этой теме рассмотрено, остальное к ней не имеет отношения.
По вопросам из тем форума, личку не читаю.
 
БМВ, согласен, проблема как путь прописать, но решение вроде нашел, буду разбираться
http://www.excelworld.ru/forum/10-6196-1
 
Цитата
БМВ написал:
Цикл по файлам
ПРОСМОТРЕТЬ ВСЕ ФАЙЛЫ В ПАПКЕ
Согласие есть продукт при полном непротивлении сторон.

Контакты, благодарности
 
Спасибо всем, уже запустил процесс!)
Страницы: 1
Наверх