Переименовать все листы в excel vba

Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.

Обращение к рабочим листам

Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.

Обращение к рабочему листу в коде VBA Excel:

‘По уникальному имени

УникИмяЛиста

‘По индексу

Worksheets(N)

‘По имени листа на ярлычке

Worksheets(«Имя листа»)

  • УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
  • N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
  • Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

Количество листов в рабочей книге Excel определяется так:

‘В активной книге

Worksheets.Count

‘В любой открытой книге,

‘например, в «Книга1.xlsm»

Workbooks(«Книга1.xlsm»).Worksheets.Count

Переименование листов

В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.

С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:

expression.Name

где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.

Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.

Лист1.Name = «Реестр»

Worksheets(1).Name = «Реестр»

Worksheets(«МойЛист»).Name = «Реестр»

Скрытие и отображение листов

Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

expression.Visible

где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

  • False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
  • xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
  • True — лист становится видимым.

Аналоги присваиваемых значений:

  • False = xlHidden = xlSheetHidden = 1
  • xlVeryHidden = xlSheetVeryHidden = 2
  • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)

Примеры:

Лист1.Visible = xlSheetHidden

Лист2.Visible = 1

Worksheets(Worksheets.Count).Visible = xlVeryHidden

Worksheets(«МойЛист»).Visible = True

Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.

Home / VBA / How to RENAME a Sheet using VBA in Excel

When you add a new sheet in a workbook, you have the option to name it. But you can also rename it any time using the name property of the worksheet. In this tutorial, we will look at different ways to rename a sheet or multiple sheets using a VBA code.

Steps to Rename a Sheet using a VBA Code

  1. First, define the sheet that you want to rename using the worksheet object.
  2. After that, you need to use (.Name) to access the name property that you want to change.
  3. Next, type an equal sign to that to tell VBA the value you want to use to rename the sheet.
  4. In the end, type the name of the sheet that you want to use.

Helpful Links: Run a Macro – Macro Recorder – Visual Basic Editor – Personal Macro Workbook

Rename the Activesheet

If you want to rename the active sheet, in that case, you don’t need to define the sheet name, instead, you need to use the ActiveSheet object that tells VBA to refer to the sheet that is active right now. Here’s the code.

Activesheet.Name = "mySheet"

Note: To rename a sheet you don’t need to activate it.

As you know every sheet has a number based on its position in the workbook. Let’s say you want to rename the sheet that you have on the fifth number, the code would be.

Sheets(5).Name = "mySheet5"

When you run the above macro, it renames the sheet that is on the fifth number.

Check if Sheet Exists before Renaming

If you try to rename a worksheet that doesn’t exist, VBA will show you an error, just like below.

The solution to this problem is the following code that uses FOR EACH, which can loop through all the worksheets to find the sheet that you have defined and then rename that sheet.

Sub check_sheet_rename()
Dim ws As Worksheet
Dim mySheet As String
Dim SheetName As String

mySheet = InputBox("enter the name of the sheet that you want to rename.")
SheetName = InputBox("Enter new name for the sheet.")

For Each ws In ThisWorkbook.Worksheets
    If mySheet = ws.Name Then
    ws.Name = SheetName
    End If
Next ws

End Sub

Rename a Sheet using Value from a Cell or a Range

You can also rename a sheet by taking value from a cell. Let’s say the value is in cell A1.

Sheets("Sheet1").name = Range("A1").Value

But let’s say you want to name multiple sheets based on the values in a range of cells. In that case, you need to have code like the following.

Sub vba_sheet_rename_multiple()
Dim wsCount As Long
Dim rCount As Long
Dim ws As Worksheet
Dim name As Range
Dim i As Long

wsCount = ThisWorkbook.Worksheets.Count
rCount = Range("A1:A10").Rows.Count

'Checks if the count of the names provided is less _
or more than the sheets in the workbook
If wsCount <> rCount Then
    MsgBox "There's some problem with the names provided."
    Exit Sub
Else

    'Check if any of the cells in the name range is empty.
    For Each name In Range("A1:A10")
        If IsEmpty(name) = True Then
            i = i + 1
        End If
    Next name
    If i > 0 Then
        MsgBox "There's is a blank cell in the names range."
        Exit Sub
    End If
End If

'rename each sheet using the value from the range cell by cell.
i = 1

For Each ws In ThisWorkbook.Worksheets
    ws.name = Range("A1:A10").Cells(i, 1).Value
    i = 1 + i
Next ws

End Sub

When you run this VBA code, first it will check if the cells in the range are equal to the number of sheets that you have in the workbook. After that, it will check if all the cells in the range that you have specified have values or not. And in the end, rename all the sheets using those names.

It will verify two conditions using IF THEN ELSE and then rename all the sheets.

More Tutorials on VBA Worksheets

  • Back to VBA Worksheet / VBA Tutorial

Обычно для переименования листов в Excel мы можем быстро дважды щелкнуть вкладку листа или щелкнуть правой кнопкой мыши вкладку листа, чтобы выбрать команду «Переименовать» для переименования листов. Это очень удобно, чтобы переименовать один или два листа в Excel, но если мы хотим переименовать несколько листов в рамках одной операции, как мы можем это сделать?

Использование команды Rename для переименования листов
Использование кода VBA для переименования нескольких листов
Использование удобного инструмента для удобного переименования нескольких листов


Использование команды Rename для переименования листов

Мы можем быстро переименовать листы в Excel с помощью Переименовывать команду в соответствии со следующими процедурами:

Щелкните правой кнопкой мыши вкладку листа, который вы хотите переименовать, и выберите Переименовывать из контекстного меню. Или дважды щелкните вкладку листа, чтобы переименовать лист. Затем введите новое имя и нажмите Enter ключ, чтобы переименовать его, см. снимок экрана:

С этой Переименовывать , вы можете переименовать только один лист за раз, чтобы переименовать несколько листов, повторите указанные выше операции.


Наблюдения и советы этой статьи мы подготовили на основании опыта команды Переименовать несколько листов полезности Kutools for Excel может помочь вам легко переименовать несколько листов одновременно в Excel.
Скачать сейчас! (30-дневная бесплатная трасса)


Использование кода VBA для переименования нескольких листов

Здесь я представлю вам два кода VBA для переименования нескольких листов.

1. Код VBA для одновременного переименования нескольких листов по желаемому имени.

Используя следующий код VBA, вы можете быстро переименовать все листы текущей книги с тем же префиксом в их именах листов, например: KTE-order1, KTE-order 2 и KTE-order 3…

1. Нажмите на Застройщик > Визуальный Бейсики нажмите Вставить > Модули в Приложение Microsoft Visual Basic для Windows.

2. Скопируйте и вставьте следующий код в Модули

VBA: переименуйте все листы, введя определенное имя

Sub ChangeWorkSheetName()
'Updateby20140624
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
newName = Application.InputBox("Name", xTitleId, "", Type:=2)
For i = 1 To Application.Sheets.Count
    Application.Sheets(i).Name = newName & i
Next
End Sub

3.  Нажмите документ переименовать несколько листов-4 кнопку, чтобы выполнить код, и введите желаемое имя во всплывающем диалоговом окне. см. скриншоты:

документ переименовать листы 2

4. Нажмите OK. Затем вы увидите, что все листы переименованы.

документ переименовать листы 3

2. Код VBA для переименования нескольких листов по определенному значению ячейки на каждом листе активной книги.

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

1.  Укажите ячейку, которая будет содержать имя рабочего листа на каждом листе, и введите в нее имя рабочего листа. В этом примере я введу имя рабочего листа в ячейку A1 на каждом листе.

2.  Нажмите Застройщик > Визуальный Бейсики нажмите Вставить > Модули в Приложение Microsoft Visual Basic Окон.

3.  Скопируйте и вставьте следующий код в модуль.

VBA: переименовать листы по определенному содержимому ячейки

Sub RenameTabs()
'Updateby20140624
 For x = 1 To Sheets.Count
 If Worksheets(x).Range("A1").Value <> "" Then
 Sheets(x).Name = Worksheets(x).Range("A1").Value
 End If
 Next
 End Sub

4.  Нажмите документ переименовать несколько листов-4 кнопку для выполнения кода. Все рабочие листы переименовываются на основе содержимого ячеек A1.

Ноты:

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

2. Если конкретная ячейка не имеет содержимого, то рабочий лист этой ячейки не будет переименован.


Использование удобного инструмента для удобного переименования нескольких листов

Наблюдения и советы этой статьи мы подготовили на основании опыта команды Переименовать несколько листов инструмент Kutools for Excel очень удобен для переименования всех листов или выбранных конкретных листов текущей книги.

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

1. Переименуйте несколько рабочих листов с определенными данными, используя Kutools for Excel

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

1.  Нажмите Кутулс Плюс > Рабочий лист > Переименовать листы. Смотрите скриншот:

2. Задайте настройки в Переименовать несколько листов диалоговое окно. Смотрите скриншот:

документ переименовать листы 5

1. Выберите листы, которые вы хотите переименовать, из Worksheets .

2. Выберите один тип, листы которого вы хотите переименовать в Параметры переименования.

3. Введите конкретное значение в Из поля ввода.

3. Затем нажмите OK. Вы получите следующие результаты:

документ переименовать листы 6

2. Переименуйте несколько рабочих листов со значениями ячеек, используя Kutools for Excel

Если у вас есть диапазон значений ячеек, и теперь вам нужно переименовать имя рабочего листа со значениями ячеек, эта утилита также может помочь вам быстро переименовать несколько листов с определенными значениями ячеек. Пожалуйста, сделайте так:

1. Примените эту утилиту, нажав Предприятие > Рабочий лист > Переименовать несколько листов . И в Переименовать несколько листов диалоговом окне укажите следующие параметры:

документ переименовать листы 7

1. Выберите листы, которые вы хотите переименовать, из Worksheets .

2. Выберите один тип, листы которого вы хотите переименовать в Параметры переименования.

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

3.  Затем нажмите OK. Вы получите следующий результат:

документ переименовать листы 8

3. Переименуйте несколько рабочих листов с определенным значением ячейки на каждом листе, используя Kutools for Excel

Чтобы переименовать рабочий лист с определенным значением ячейки на каждом листе, Kutools for Excel‘s Переименовать несколько листов также могу оказать вам услугу, пожалуйста, сделайте следующее:

1. Примените эту утилиту, нажав Предприятие > Рабочий лист > Переименовать несколько листов . И в Переименовать несколько листов диалоговом окне укажите следующие параметры:

документ переименовать листы 9

1. Выберите листы, которые вы хотите переименовать, из Worksheets .

2. Выберите один тип, листы которого вы хотите переименовать в Параметры переименования.

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

2. Затем нажмите Ok кнопки, имена рабочих листов были переименованы с конкретным значением ячейки на каждом листе, см. снимок экрана:

документ переименовать листы 10

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Демонстрация: переименуйте несколько рабочих листов с помощью Kutools for Excel


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

 

stevie44

Пользователь

Сообщений: 257
Регистрация: 02.06.2013

Здравствуйте!
Просьба помочь через 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?
Спасибо.

Прикрепленные файлы

  • Шаблон.xlsx (13.97 КБ)

 

heso

Пользователь

Сообщений: 444
Регистрация: 14.08.2015

а последняя вкладка «Формулы» — обязательна?

Изменено: heso03.11.2016 12:26:01

 

stevie44

Пользователь

Сообщений: 257
Регистрация: 02.06.2013

heso, да, обязательна, на ней ссылки для макросов на другие книги, а также на ней я хотел использовать привязку к названиям листов.
Порядковый номер листа, как я вычитал, определяет через Index, но как определить с помощью него 2-й, 3-й и 4-й порядковые номера листов, так и не понял.

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#4

03.11.2016 13:04:41

Код
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
 

heso

Пользователь

Сообщений: 444
Регистрация: 14.08.2015

 

stevie44

Пользователь

Сообщений: 257
Регистрация: 02.06.2013

Kuzmich, это не то, что требуется. Названия листов каждый месяц будут изменяться, мне нужно чтобы не было привязки к названиям листов в коде, привязка должна быть к ячейкам на листе «Формулы».
heso, не совсем так. На листе «Формулы» Новые названия листов не должны изменяться после запуска макросом, они должны оставаться неизменными, я самостоятельно буду их менять. И макрос берет из «Новые названия листов»  только данные в формате «01», «AA 02», «BB 02», как я указал и выше, это верно. А возможно ли сделать без привязки? То есть любое произвольное название в ячейки изменяет название листа?

Спасибо.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#7

03.11.2016 16:21:13

Код
Sub qq()
    For Each cel In [f1:h1]
        Sheets(cel.Value).Name = (cel.Offset(1).Value)
    Next
End Sub
 

stevie44

Пользователь

Сообщений: 257
Регистрация: 02.06.2013

RAN, макрос отлично работает в шаблоне, который я вложил, спасибо!
Однако в моем файле, где вроде бы все тоже самое, выдает ошибку: Run-time error ‘9’: subscript out of range .
По описанию через F1 я не понял, что не так…
С чем это может быть связано?

 

Hugo

Пользователь

Сообщений: 23254
Регистрация: 22.12.2012

Скорее всего нет Sheets(cel.Value)

 

S.K.

Пользователь

Сообщений: 55
Регистрация: 07.05.2018

#10

06.07.2018 14:20:17

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

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

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

Есть вот такой код, но применяется только на первый лист, остальные остаются без изменений

Код
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

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

Ку-Ку мой мальчик!..

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#11

06.07.2018 14:34:15

Цитата
S.K. написал:
Есть несколько документов, с большим количеством листов, требуется переименовать все листы, согласно значению конкретной ячейки

А зачем тогда вызывать диалоговое окно? Макрос может сам открыть документ, переименовать все листы и закрыть документ. Хотите?

 

S.K.

Пользователь

Сообщений: 55
Регистрация: 07.05.2018

#12

06.07.2018 14:53:38

Цитата
Казанский написал:
А зачем тогда вызывать диалоговое окно? Макрос может сам открыть документ, переименовать все листы и закрыть документ.

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

если есть другое решение проблемы, буду рад подсказкам и помощи :-)

Ку-Ку мой мальчик!..

 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

#13

06.07.2018 15:27:28

Если на каждом листе адрес ячейки с будущим именем листа одинаков, то в Вашем макросе достаточно строку 10 изменить на

Код
Worksheets(i).Name = Range(rng.address)

Владимир

 

S.K.

Пользователь

Сообщений: 55
Регистрация: 07.05.2018

Спасибо большое! Все заработало.
Как говорится, а ларчик просто открывался :-)

Изменено: S.K.29.08.2018 17:20:56

 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

#15

06.07.2018 15:39:05

Успехов! Уберите, пожалуйста, цитату в сообщении #14, а то нам влетит от модераторов. :)  

Владимир

0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 6

1

Необходимо переименовать большое количество листов

14.05.2015, 11:20. Показов 3052. Ответов 10


Студворк — интернет-сервис помощи студентам

Всем привет. Проблема в следующем: есть большое кол-во листов в книге. И есть названия этих листов типа 01-05-15К или др. буква. Название берется из названия акта (можно присвоить из ячейки). Можете умные товарищи подсказать, какой макрос написать для автоматического переименования этих листов. И корректировке при добавлении новых. А то накосячила и придется 20 листов вручную переименовывать. Заранее спасибо.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

14.05.2015, 11:20

Ответы с готовыми решениями:

Переименовать большое количество картинок
В папке 50.000 картинок, а мне нужно 20.000
Есть файл с названиями этих 20.000 картинок, как или…

Необходимо отобразить в Delphi большое количество объектов
Необходимо отобразить в Delphi большое количество объектов, как на карте. Необходима возможность…

Необходимо заменить большое количество знаков в документе
Здравствуйте, мне необходимо заменить большое количество знаков в документе, только при условии не…

Определить, сколько можно купить тетрадей по 12 листов, по 48 листов и по 96 листов, зная цену
Определить, сколько можно купить тетрадей по 12 листов, по 48 листов и по 96 листов,
если цена…

10

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

14.05.2015, 11:41

2

Цитата
Сообщение от varenice
Посмотреть сообщение

(можно присвоить из ячейки)

из какой? ячейка на всех листах? одна и та же?



1



0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 6

14.05.2015, 12:51

 [ТС]

3

Да, на каждом листе ячейка одна и та же точнее их две. Они объединены. Ячейка С1



0



Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

14.05.2015, 13:18

4

Лучший ответ Сообщение было отмечено varenice как решение

Решение

для переименования листов книге.

Visual Basic
1
2
3
4
5
6
7
Sub Update_Sheet_Name()
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
    Sheets(i).Name = Sheets(i).Range("C1").Value
Next
Application.ScreenUpdating = True
End Sub

Т.к. файла не видел то перед запуском макроса сохранитесь и если что не так после прохода макроса закрывайте без сохранения.
для добавления листов макрос другой нужно писать или после добавления листов и прописывания значений в ячейки С1 запускать этот.



1



varenice

0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 6

14.05.2015, 13:30

 [ТС]

5

Выдает ошибку может мне приложить файл с который необходимо изменить? Или набросать быстренько пример?

Visual Basic
1
2
3
4
5
6
7
Sub Update_Sheet_Name()
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
Sheets(i).name = Sheets(i).Range("C1").Value (в этой строке)
Next
Application.ScreenUpdating = True
End Sub



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

14.05.2015, 13:33

6

Цитата
Сообщение от varenice
Посмотреть сообщение

Или набросать быстренько пример?

может это стоит Вам сделать



1



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

14.05.2015, 13:36

7

Лучший ответ Сообщение было отмечено varenice как решение

Решение

Цитата
Сообщение от varenice
Посмотреть сообщение

может мне приложить файл который необходимо изменить

если там ни чего конфиденциального то приложите.
Fairuza, это же вопрос.



1



0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 6

14.05.2015, 13:37

 [ТС]

8

И заодно, может подскажете как автоматически переименовывать ячейку С1 при добавлении или удалении листа чтобы данные не сбивались премного благодарна. В примере несколько листов по факту их 90.



0



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

14.05.2015, 13:56

9

Лучший ответ Сообщение было отмечено varenice как решение

Решение

Цитата
Сообщение от varenice
Посмотреть сообщение

переименовывать ячейку С1 при добавлении или удалении листа чтобы данные не сбивались

здесь моих знания маловато.
если применять макрос для примера естественно вылезет ошибка начиная с пятого листа т.к. Имя листа такого уже есть. по идее нужно менять значение ячейки С1 и после имя листа. как меняется имя? первое число на 1 больше? Нумерация по очереди или в разнобой.



1



0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 6

14.05.2015, 16:45

 [ТС]

10

Нумерация по очереди и три типа работ. 01-05-15К (01 номер; 05 месяц; 15 год; далее буква обозначение работы букв 3 К-кровельные работы; р-комплексный ремонт; м-малярные работы. Акты могут изменятся могут добавляться и удаляться. И их может быть куча. Вот в данный момент из-за одного моего просчета необходимо вручную переименовать 20 актов и присвоить им вручную другие номера…..

Добавлено через 1 час 16 минут

Цитата
Сообщение от Fairuza
Посмотреть сообщение

может это стоит Вам сделать

Может быть вы сможете помочь?



0



0 / 0 / 0

Регистрация: 14.05.2015

Сообщений: 6

22.05.2015, 11:23

 [ТС]

11

Vlad999, Товарищ, ничего не придумалось?=)))



0



Понравилась статья? Поделить с друзьями:
  • Переименовать excel в word
  • Переименование ячеек в excel
  • Переименование файлов через excel
  • Переименование файлов с помощью excel
  • Переименование файлов по списку excel