Найдены скрытые имена
Инспектор документов обнаружил в книге скрытые имена. Под этими именами может храниться скрытая информация о сценариях надстройки «Поиск решения». Например, если вы используете надстройку «Поиск решения» для выполнения сценария, в ней может храниться информация о параметрах расчета и других конфиденциальных данных, например скрытые имена в книге.
Важно: Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации без гарантии, выраженной или подразумеваемой. Это относится и не только к подразумеваемой гарантии пригодности и пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который демонстрируется, и средствами, используемыми для создания и от debug procedures. Специалисты службы поддержки Майкрософт могут объяснить функциональные возможности конкретной процедуры, но не будут изменять эти примеры, чтобы предоставить дополнительные функции или процедуры по построению с учетом ваших конкретных требований.
Проблема
Инспектор документов не может удалить эти имена.
Рекомендуемое решение
Чтобы удалить скрытые имена, запустите следующий макрос: В макросе отображается окно сообщения с тремя элементами: (1), видимым или скрытым, (2) определенным и (3) ссылкой на это имя (ссылка на ячейку книги). Чтобы удалить или сохранить каждое определенное имя, выберите вариант Да или Нет.
Примечание: После удаления скрытых имен с помощью этого макроса надстройки (например, «Поиск решения») и макросы могут работать неправильно, и связанные с ними скрытые данные могут быть потеряны. Этот макрос действует на все имена, которые определяются как скрытые, а не только на те, которые были добавлены надстройкой «Поиск решения».
Внимание: Если имена листов содержат пробелы, при попытке удалить определенное имя может появиться сообщение об ошибке.
Удаление скрытых имен
' Module to remove all hidden names on active workbook Sub Remove_Hidden_Names() ' Dimension variables. Dim xName As Variant Dim Result As Variant Dim Vis As Variant ' Loop once for each name in the workbook. For Each xName In ActiveWorkbook.Names 'If a name is not visible (it is hidden). If xName.Visible = True Then Vis = "Visible" Else Vis = "Hidden" End If ' . ask whether or not to delete the name. Result = MsgBox(prompt:="Delete " & Vis & " Name " & _ Chr(10) & xName.Name & "?" & Chr(10) & _ "Which refers to: " & Chr(10) & xName.RefersTo, _ Buttons:=vbYesNo) ' If the result is true, then delete the name. If Result = vbYes Then xName.Delete ' Loop to the next name. Next xName End Sub
Скрытые имена в Excel
В процессе работы над моделью в Excel возникла загадочная неисправимая ошибка. Т.к. модель состоит из нескольких книг, необходимо включать обновление связей между книгами модели. При попытке включить обновление связей:
Заходим в редактор связей и видим причину ошибки:
Последняя связь в работе модели не участвует, но разорвать ее не удается. Excel ничего дополнительно не сообщает. Источник не найден, и все. Т.е. можно догадаться, что он есть, раз связь не разрывается…
Пытаюсь искать ссылку на книгу в формулах:

В Диспетчере имен пусто:
Не удается найти источник ошибочной ссылки…
Распаковываю книгу и копаюсь в xml файлах:
Наводит на размышления… Изучаю атрибуты класса Names во встроенном языке программирования, пишу такую микро процедуру: 

После выполнения процедуры вижу приличный список имен в Диспетчере:
Удивляюсь, но не очень сильно =)
Удаляю имена и разрываю связь. Ошибка исчезает.
Возможно ли не пользуясь процедурой на VBA изменить статус скрытых имен? Я не нашел другого способа (Excel 2007).
3 Одна мысль на “ Скрытые имена в Excel ”
- ikki 16.08.2012 >> Возможно ли не пользуясь процедурой на VBA изменить статус скрытых имен? нет.
Как найти скрытые имена в excel
При копировании листа из одного файла в другой, может появляться окно с предупреждением о том, что уже есть такое имя. При этом, если просто зайти в Диспетчер имен, то список может быть и совершенно пустым.
Можно отобразить скрытые имена с помощью небольшого макроса:

Чтобы воспользоваться данным алгоритмом, необходимо открыть редактор Visual Basic (клавиши Alt + F11 ) и вставить на лист модуля (если модуля нет, то выполнить команду Insert—Module):
Sub Unhidden_Name()
Dim vName As Variant
For Each vName In ThisWorkbook.Names
vName.Visible = 1
Next vName
End Sub
Затем вернуться в окно Microsoft Excel, запустить выполнение макроса в окне Макросов (клавиши Alt+F8).
В окне Диспетчера имен (клавиши Ctrl+F3) будет сформирован список всех имен, при необходимости их можно и удалить.
Оставьте комментарий!
На сообщение “Как увидеть скрытые имена в файле?” комментариев 8
- Nikolya :
26.08.2014 (17:17) О, да! меня это крайне раздражало! - Leonid :
28.08.2014 (13:00) Интересно, почему в окне Диспетчера имен он не показывает при любых фильтрах эти скрытые имена? - Олег :
22.03.2015 (12:32) Прекрасно, т.к. периодически встречаюсь при копировании листа - Ирина Викторовна :
03.10.2015 (19:47) Не буду пытаться понять почему так происходит, просто буду искать скрытые имена через данный макрос. Огромное спасибо! - SuzanJam :
04.11.2018 (02:42) Hey. I sent a screenshot. Did you get it? - Ольга Кулешова :
06.11.2018 (23:52) Hi! Your screenshot is not received - Павлик :
21.11.2018 (19:15) Не могу понять только одного: почему программа сама сразу не готова все имена показывать и не скрывать! - Эркинжон :
31.01.2022 (09:15) Большое спасибо, Вам
Публикации
- Нарастающий итог в Power Query
- Отключение «типов данных» в Power Query
- 2 способа создания отчетов по данным модели Power Pivot
- Функция Text.Format
- Удаление пустых строк и столбцов в Power Query
Страницы
- Анонсы расписания
- Видео и Статьи
- Вопрос-Ответ
- Контакты
- Об авторе
- Обучение в программе Microsoft Excel
- Корпоративное обучение
- Диаграммы
- Надстройки Power
- Новое в Excel 2013
- Работа с данными ячеек
- Работа с табличными массивами
- Форматирование
- Формулы и функции
Комментарии
- Светлана к записи Почему даты в фильтре не группируются?
- Эркинжон к записи Как увидеть скрытые имена в файле?
- Ольга Кулешова к записи Преобразование текста в число и наоборот
- Ольга Кулешова к записи Отключение «типов данных» в Power Query
- Ольга Кулешова к записи 2 способа создания отчетов по данным модели Power Pivot
Вывод списка имён (Names) книги Excel на новый лист

В диспетчере имён можно создать новые имена, просмотреть ранее созданные, и, при желании, изменить их.
Одно но: в диспетчере имён отображаются только видимые имена,
а в книге Excel могут присутствовать и скрытые.
Чтобы узнать количество имён в книге, а также посмотреть их значения,
мы воспользуемся макросом:Sub ПолучениеСпискаИмёнВКниге() Dim n As Name, VisibleNames%, HiddenNames%, WB As Workbook, i As Long Set WB = ActiveWorkbook For Each n In WB.Names VisibleNames = VisibleNames - n.Visible HiddenNames = HiddenNames - Not n.Visible Next n If VisibleNames + HiddenNames = 0 Then MsgBox "Имена в книге отсутствуют (не назначены)", vbInformation Else msg = "Количество имён в книге: " & VisibleNames + HiddenNames & vbNewLine & _ "Из них видимых: " & VisibleNames & ", скрытых: " & HiddenNames & vbNewLine & _ vbNewLine & "Вывести на лист список всех имён?" If MsgBox(msg, vbInformation + vbYesNo, "Имена в открытом файле") = vbYes Then Dim sh As Worksheet: Set sh = Workbooks.Add(xlWBATWorksheet).Worksheets(1) sh.Cells(1, 1).Resize(, 4).Value = _ Array("№", "Имя", "Видимость", "Ссылка (значение)") sh.Cells(1, 1).Resize(, 4).Interior.ColorIndex = 15 For i = 1 To WB.Names.Count Set n = WB.Names(i) sh.Cells(i + 1, 1).Resize(, 4).Value = _ Array(i, n.Name, IIf(n.Visible, "Видимое", "Скрытое"), "'" & n.RefersTo) Next i sh.UsedRange.EntireColumn.AutoFit End If End If End Sub
Для этого в прикреплённом файле нажмём зеленую кнопку,
и увидим вообщение с информацией о количестве имен в книге:
Если в диаоговом окне мы нажмём «Да», то макрос создаст новую книгу, и сформирует в ней таблицу со списком всех имен книги:

Если же вам требуется вывести список видимых имён на лист Excel, то можно воспользоваться макросом из одной строки:
Sub СписокВидимыхИмён() ActiveCell.ListNames End Sub
Того же эффекта можно добиться, нажав кнопку «Все имена» в диалоговом окне, вызываемом из меню Вставка — Имя — Вставить. (в Excel 2003):

- 29547 просмотров
