Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше
Инспектор документов обнаружил в книге скрытые имена. Под этими именами может храниться скрытая информация о сценариях надстройки «Поиск решения». Например, если вы используете надстройку «Поиск решения» для выполнения сценария, в ней может храниться информация о параметрах расчета и других конфиденциальных данных, например скрытые имена в книге.
Важно: Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации без гарантии, выраженной или подразумеваемой. Это относится и не только к подразумеваемой гарантии пригодности и пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который демонстрируется, и средствами, используемыми для создания и от 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 возникала ошибка, которая сообщает что Имя уже существует и нужно либо выбрать новое, либо использовать тоже. Хорошо если таких ошибок 2 — 3, а если их несколько сотен или тысяч, тогда никакого терпения не хватит нажимать ОК. Используя рекомендации, представленные ниже, Вы избавитесь от ошибки навсегда! Итак, приступим:
1. Создание макроса DeleteHiddenNames.
Встроенной функции в Excel для решения этой проблемы я не нашел, зато есть замечательный макрос, с помощью которого мы от нее избавимся. Сначало надо зайти в редактор макросов, для этого запустите Excel, откройте файл с проблемой и нажмите ALT+F11. Откроется Microsoft Visual Basic for Applications, далее заходим в меню Insert и выбираем Module.
Открывается окно модуля. Туда Вы должны вставить следующий код макроса:
Sub DeleteHiddenNames()
Dim n As Name
Dim Count As Integer
On Error Resume Next
For Each n In ActiveWorkbook.Names
If Not n.Visible Then
n.Delete
Count = Count + 1
End If
Next n
MsgBox «Скрытые имена в количестве » & Count & » удалены»
End Sub
Выглядеть это должно в результате следующим образом:
Отлично. Макрос мы создали, теперь нам осталось его применить.
2. Использования макроса для удаления скрытых имен в Excel.
Переключаемся назад на нашу Эксель книгу, переходим в меню Вид, там выбираем блок Макросы и в нем нажимаем на меню Макросы.
В открывшемся меню выбираем макрос DeleteHiddenNames и нажимаем кнопку выполнить.
Макрос отработает некоторое время (чем больше скрытых имен у Вас в файле, тем дольше он будет работать) и выдаст сообщение о том, сколько имен было удалено. Поздравляю Вы избавились от проблемы и можете смело копировать листы.
Я надеюсь что эта инструкция Вам помогла, заходите на сайт почаще — здесь много еще чего полезного для Эксель найдете. Есть вопросы — смело пишите их в комментариях к статье.
На работе мне приходится заполнять эксель-файл с индивидуальными целевыми показателями (используется для расчета премии). Шаблоны файлов поступили из центрального офиса. Ежемесячно я копирую последнюю вкладку и заполняю актуальной информацией.
Всё бы ничего, но каждый раз при копировании выскакивает окно с уведомлением о том, что копируемые формулы содержат какие-то имена. И таких имён порядка 30 на странице. То есть, каждый раз копируя вкладку мне надо 30 раз нажать кнопку «Да».
Когда это случилось первый раз я просмотрел все ячейки, никаких имён не нашёл и… махнул на это рукой. Месяц спустя, когда снова копировал вкладку — выругался, 30 раз подтвердил и снова забыл на месяц. В общем, так прошло больше года. Однако, даже моё терпение заканчивается…
Вчера, в очередной раз столкнувшись с необходимостью нажимать кнопку «Да», залез в Гугл с запросом «удалить имена в эксель». Нашёл замечательную страничку, где прочитал, как можно просмотреть список имен (нажав кнопку «Все имена» в диалоговом окне, вызываемом из меню Вставка — Имя — Вставить…) и удалить ненужные
Сделал, удалил, но… диспетчер имён удаляет только видимые имена, а есть ещё и скрытые.
Следующая ссылка привела на сайт Майкрософт (доступ только по учётной записи). Там выложен макрос, который позволяет удалять скрытые имена из эксель-файла. Копирую макрос здесь, чтобы на будущее не искать:
‘ 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
Вот вся последовательность необходимых действий:
На вкладке «Вид» (1) нажимаем кнопку «Макросы» (2) — выскакивает окно. Вводим произвольное имя (3) — становится доступной кнопка «Создать» (4). Нажимаем…
Открывается окно редактора макросов с набранными несколькими строчками заготовки макроса (5).
Копируем код макроса на место имеющегося текста и закрываем окно текущего макроса (6) и окно редактора макросов.
Снова Вид — Макросы и видим, что произвольное имя изменилось на Remove_Hidden_Names. Выбираем и нажимаем «Выполнить» (7)
Макрос запрашивает подтверждение на удаление каждого из имен, но это в последний раз. Так как кнопка «Yes» активна по умолчанию и если ни одно имя не нужно, то можно просто нажать и держать «Enter», пока все имена не будут удалены.
Всё. Теперь вкладку можно копировать без каких-либо дополнительных подтверждений.
Удалить все кроме нужных именованные диапазоны |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Проблемы при копировании листов внутри книги и именами
Автор John Silver, 15.04.2010, 06:37
« назад — далее »
Приветсвую всех!
возникла следующая проблема, при копировании листа выдает вполне законную ошибку о том что на новом листе будут такие же имена как и на старом, что пугает бабушек которые работают… Но основная проблема в том, что этих имен нет, т.е. в списке где я присваиваю имена пусто.
Подскажи пожалуйста где их ещё можно поискать и удалить чтобы не приходилось по несколько раз давать согласие на то что имена тебе не мешают.
Заранее благодарен.
Файл без имён выкладывайте.
Я удалили всю информацию — она не имеет значения, ошибка все равно остается. Если есть возможность расскажите где хранятся эти имена, я уже все перерыл…
Гад прятался здесь (см. вложение)
В 2007 — Формулы — диспетчер имён, в 2003 — не помню…
Но и там и там действует Ctrl+F3.
проблема не исчезла… Просто попробуй скопировать лист, у меня он при этом выдает такое сообщение см. вложение…
У меня нормально работает…
Сейчас времени нет — бегу на работу.
Жди через часа полтора.
Или может кто раньше поможет.
Я проблему в принципе решил, скопировав все в новые книги, но все таки так и не понял откуда это взялось и как это убрать…
У меня всё работает…
Эксель 2007.
«Скрытые имена.
Отдельные макросы и надстройки Excel создают скрытые имена. Так называются имена, ко-
торые в рабочей книге содержатся, но в диалоговом окне Применение имени их не видно.
Например, большое количество скрытых имен создается надстройкой Поиск решения. Эти
скрытые имена можно игнорировать. Впрочем, иногда они создают проблему. При копиро-
вании листа в другую рабочую книгу скрытые имена также копируются, кроме того, они мо-
гут создать ссылку, которую трудно обнаружить,
Для удаления из рабочей книги всех скрытых имен используйте следующую процедуру VBA.
Sub DeleteHiddenNames()
Dim n As Name
Dim Count As Integer
For Each n In ActiveWorkbook.Names
If Not n.Visible Then
n.Delete
Count = Count + 1
End If
Next n
MsgBox «Скрытые имена в количестве » & Count & » удалены»
End Sub»
From «Excel 2002 Power
Programming
with VBA»
John Walkenbach
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Проблемы при копировании листов внутри книги и именами