Вывод имени листа в ячейку другого листа этого же файла.

Автор Анюта, 22 июля 2026, 11:28

0 Пользователи и 1 гость просматривают эту тему.

Анюта

Может быть пойти другим путём. Алиса подсказывает, чтобы получить имя листа надо ввести формулу =ИМЯЛИСТА().Я так понимаю, что должно появиться имя листа в котором вставлена эта формула. такой вариант меня устраивает. Но вводя эту формулу, получаю #имя. Может подскажете в чём проблема?

bigor

Цитата: Анюта от 22 июля 2026, 17:53получаю #имя
эту функцию знает только Алиса
Поддержать наш форум можно здесь

bigor

Цитата: Анюта от 22 июля 2026, 17:53такой вариант меня устраивает
чем не устраивает вариант из #3 уберите только для cell второй параметр =REGEX(CELL("filename");"\$.*")
Поддержать наш форум можно здесь

Анюта

Иннет даёт ответ на формулу =REGEX(CELL("filename");"\$.*").
Функция REGEX (и даже CELL) — это западный синтаксис (например, для LibreOffice или Google Таблиц). В русской версии для работы с регулярными выражениями обычно пишут макросы на VBA или используют надстройки, которые добавляют поддержку RegEx.

Ципихович Эндрю

Sub ListAllSheetNames()
    Dim oDoc As Object
    Dim oSheets As Object
    Dim aSheetNames As Variant
    Dim i As Long
    Dim oSheet As Object
    Dim oCell As Object
   
    ' Получаем текущий документ и все его листы
    oDoc = ThisComponent
    oSheets = oDoc.getSheets()
   
    ' Получаем массив со всеми именами листов
    aSheetNames = oSheets.getElementNames()
   
    ' Определяем активный лист (тот, на котором запущен макрос)
    oSheet = oDoc.getCurrentController().getActiveSheet()
   
    ' Записываем имена в столбец A, начиная с ячейки A1
    For i = LBound(aSheetNames) To UBound(aSheetNames)
        oCell = oSheet.getCellByPosition(0, i)  ' 0 = колонка A, i = строка
        oCell.setString(aSheetNames(i))
    Next i
   
    ' Небольшое сообщение об окончании работы
    MsgBox "Готово! Имена " & (UBound(aSheetNames) - LBound(aSheetNames) + 1) & " листов записаны в столбец A."
End Sub
оно?

sokol92

#20
Еще можно написать UDF функцию, которая по номеру листа в документе выдает его имя (см. вложение).
Функция вычисляется в момент открытия файла. При действиях с именами листов (переименование и т.п.) следует выполнить безусловный пересчет формул (Ctrl+Shift+F9 для MS Windows).
Владимир.

bigor

Поддержать наш форум можно здесь

Ципихович Эндрю

Цитата: bigor от 22 июля 2026, 20:03осталось ещё отслеживать изменение имени листов
=нужен слушатель, сделать его не сложно, но я сторонник того, что нужно ждать десятилетия (время быстро летит), чтобы такую на первый взгляд мелочь встроили и был такой инструмент штатно..
а там можно кнопку прикрутить, или ещё что-то, но ТС виднее, так как это как я понимаю начало её пожеланий и возможно туда далее и можно придумать, такие дела...

Анюта

Всем  здравствуйте.
socol92 как всегда на высоте!  Единственное что плохо,надо закрывать и вновь открывать файл.  Вот если бы был макрос, который менял бы имена листов и в книге и в листе «Итог», без закрытия файла,было бы супер.
У меня в книге 13 листов 12  с о названиями, которые будут изменятся и лист «итог», в котором происходит изменение названий листов, имена 12-ти листов находятся в листе «Итог» в столбце А начиная с ячейки А2, имена листов там вставлены. Файл приложила.
Код Ципихович у меня не работает.
Всем принявшем участие в беседе спасибо.

bigor

Поддержать наш форум можно здесь

Анюта


bigor

Цитата: Анюта от 23 июля 2026, 12:14Реакция 0.
странно, а если через меню этот пункт выполнить?
Поддержать наш форум можно здесь

Анюта

Подсказали мне вариант макроса который  переименовывает имена листов. Причём это делает как в одну так и в другую стороны. Может бытькоеому-то сгодится.
Всем участникам обсуждения спасибо.
Файл высылаю.

bigor

Цитата: Анюта от 24 июля 2026, 15:34переименовывает имена листов
просили же под calc. Не знаю как в excel, а в calc работает аналогично макросу от Ципихович Эндрю, только имя активного листа не выводит
Поддержать наш форум можно здесь

Ципихович Эндрю

Цитата: Анюта от 24 июля 2026, 15:34Причём это делает как в одну так и в другую стороны
в ячейке меняешь и название листа меняется-так что-ли?