vanya7819
Пользователь
Сообщений: 88
Регистрация: 25.01.2013
Доброго времени суток! Подскажите, пожалуйста… Мне нужно удалить все имена в диспетчере имен.
На сайте нашел макрос, но он для моего файла не подходит.
Код |
---|
Sub DellAllName() Dim name As Object For Each name In ActiveWorkbook.Names name.Delete Next End Sub |
Файл должен иметь расширение «*.xlsb», Имен очень много будет, хотелось бы макросом, если это возможно (с расширением «*.xlsm» — работает)
Спасибо!
Изменено: vanya7819 — 08.12.2017 23:39:34
I’m trying to delete all names from an excel workbook using VBA
without using a loop.
I’m currently using the code below, but this is very slow as there are several thousand names in the workbook.
Any suggestions would be appreciated!
Sub deleteAllNames()
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
xName.Delete
Next
End Sub
asked Feb 1, 2017 at 2:08
2
Not possible without some complicated hacky way or messing with the XML, but this should be faster:
Dim i As Long
Application.Calculation = xlCalculationManual
For i = ThisWorkbook.Names.Count To 1 Step -1
ThisWorkbook.Names(i).Delete
Next
Application.Calculation = xlCalculationAutomatic
answered Feb 1, 2017 at 2:36
SlaiSlai
21.8k5 gold badges43 silver badges52 bronze badges
5
I had the same problem deleting all named ranges, the code was running very slowly. You can fix this by turning off the screen update and the calculation while the loop is running.
Sub deleteAllNames()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
xName.Delete
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
answered Mar 8, 2017 at 19:33
Содержание
- Найдены скрытые имена
- Проблема
- Рекомендуемое решение
- Vba excel удаление имен
- How to Selectively Delete Name Ranges in Excel using a VBA macro?
- Delete All Name Ranges
- Delete All Name Ranges EXCEPT Print Area
- Delete All Name Ranges With #REF Value
- Delete All Visible Name Ranges
- Delete All Hidden Name Ranges
- Comments from the Reader
- Related Posts
- Leave a Reply
- About Excel Help HQ
- Vba excel удаление имен
Здравствуйте. Рад представить Вам пошаговую инструкцию по удалению скрытых имен в Экселе. Вы возможно сталкивались с ситуацией, когда при копировании листа в книге 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 и нажимаем кнопку выполнить.
Макрос отработает некоторое время (чем больше скрытых имен у Вас в файле, тем дольше он будет работать) и выдаст сообщение о том, сколько имен было удалено. Поздравляю Вы избавились от проблемы и можете смело копировать листы.
Источник
Найдены скрытые имена
Инспектор документов обнаружил в книге скрытые имена. Под этими именами может храниться скрытая информация о сценариях надстройки «Поиск решения». Например, если вы используете надстройку «Поиск решения» для выполнения сценария, в ней может храниться информация о параметрах расчета и других конфиденциальных данных, например скрытые имена в книге.
Важно: Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации без гарантии, выраженной или подразумеваемой. Это относится и не только к подразумеваемой гарантии пригодности и пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который демонстрируется, и средствами, используемыми для создания и от debug procedures. Специалисты службы поддержки Майкрософт могут объяснить функциональные возможности конкретной процедуры, но не будут изменять эти примеры, чтобы предоставить дополнительные функции или процедуры по построению с учетом ваших конкретных требований.
Проблема
Инспектор документов не может удалить эти имена.
Рекомендуемое решение
Чтобы удалить скрытые имена, запустите следующий макрос: В макросе отображается окно сообщения с тремя элементами: (1), видимым или скрытым, (2) определенным и (3) ссылкой на это имя (ссылка на ячейку книги). Чтобы удалить или сохранить каждое определенное имя, выберите вариант Да или Нет.
Примечание: После удаления скрытых имен с помощью этого макроса надстройки (например, «Поиск решения») и макросы могут работать неправильно, и связанные с ними скрытые данные могут быть потеряны. Этот макрос действует на все имена, которые определяются как скрытые, а не только на те, которые были добавлены надстройкой «Поиск решения».
Внимание: Если имена листов содержат пробелы, при попытке удалить определенное имя может появиться сообщение об ошибке.
Источник
Vba excel удаление имен
Всем привет и хорошего настроения!
Какие можно придумать способы массового удаления именованных диапазонов по условию?
Появилась необходимость почистить один файл. Через Thisworkbook.Names посчитал количество именованных диапазонов — 24 тысячи. Из них, если верить Thisworkbook.Names(Х).RefersTo, с битыми ссылками 19 тысяч — их и надо удалить, сохранив корректные. Отличаются по наличию «#REF!» в тексте (оно же «#ССЫЛКА«).
Файл оказался забит некорректными именами, так как исторически в него добавлялись листы из других файлов. При использовании «перенести в другую книгу» переносится не только лист, но и все имена исходного файла. При этом, если заголовок исходного файла менялся, а из него в будущем снова добавляли листы (что и произошло) — в целевом файле появлялось множество имён с одинаковым названием.
Пробовал удалять имена по-одной с помощью VBA или из диспетчера именованных диапазонов с фильтром по некорректным ссылкам — работает критически долго, приходится прерывать. Пробовал открыть файл как архив, но внутри не нашёл, где лежат ссылки. Может, кто-то уже решал похожую проблему?
Всем привет и хорошего настроения!
Какие можно придумать способы массового удаления именованных диапазонов по условию?
Появилась необходимость почистить один файл. Через Thisworkbook.Names посчитал количество именованных диапазонов — 24 тысячи. Из них, если верить Thisworkbook.Names(Х).RefersTo, с битыми ссылками 19 тысяч — их и надо удалить, сохранив корректные. Отличаются по наличию «#REF!» в тексте (оно же «#ССЫЛКА«).
Файл оказался забит некорректными именами, так как исторически в него добавлялись листы из других файлов. При использовании «перенести в другую книгу» переносится не только лист, но и все имена исходного файла. При этом, если заголовок исходного файла менялся, а из него в будущем снова добавляли листы (что и произошло) — в целевом файле появлялось множество имён с одинаковым названием.
Пробовал удалять имена по-одной с помощью VBA или из диспетчера именованных диапазонов с фильтром по некорректным ссылкам — работает критически долго, приходится прерывать. Пробовал открыть файл как архив, но внутри не нашёл, где лежат ссылки. Может, кто-то уже решал похожую проблему? Rioran
Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
Сообщение Всем привет и хорошего настроения!
Какие можно придумать способы массового удаления именованных диапазонов по условию?
Появилась необходимость почистить один файл. Через Thisworkbook.Names посчитал количество именованных диапазонов — 24 тысячи. Из них, если верить Thisworkbook.Names(Х).RefersTo, с битыми ссылками 19 тысяч — их и надо удалить, сохранив корректные. Отличаются по наличию «#REF!» в тексте (оно же «#ССЫЛКА«).
Файл оказался забит некорректными именами, так как исторически в него добавлялись листы из других файлов. При использовании «перенести в другую книгу» переносится не только лист, но и все имена исходного файла. При этом, если заголовок исходного файла менялся, а из него в будущем снова добавляли листы (что и произошло) — в целевом файле появлялось множество имён с одинаковым названием.
Пробовал удалять имена по-одной с помощью VBA или из диспетчера именованных диапазонов с фильтром по некорректным ссылкам — работает критически долго, приходится прерывать. Пробовал открыть файл как архив, но внутри не нашёл, где лежат ссылки. Может, кто-то уже решал похожую проблему? Автор — Rioran
Дата добавления — 14.10.2015 в 10:34
Источник
How to Selectively Delete Name Ranges in Excel using a VBA macro?
In a prior post (How to unhide or delete name ranges in Excel?), we talked about how to unhide and use the name range interface (Ctrl+F3) to select and delete name ranges. But what if you want to use VBA to delete name ranges quickly or with certain conditions?
It is not uncommon to see older worksheets ending up with hundreds of old or stale name ranges. You do not have to deal with them manually. The VBA code below will help you manage name ranges quickly and efficiently:
Delete All Name Ranges
Delete All Name Ranges EXCEPT Print Area
When we set a certain part of a spreadsheet as the print area (the portion of the spreadsheet that is to be printed by default), the cell areas are saved as a name range. If we run the macro above (DeleteAllRanges), then we would lose the print area.
To prevent this, we should check the name of each name range in the loop before deleting them. Fortunately, all the “Print Area” name ranges have the name “Print_Area”, so it is quite easy to identify these special name ranges.
Basically a simple if statement can filter and prevent these name ranges from being deleted:
Delete All Name Ranges With #REF Value
Sometimes an Excel workbook inherits a lot of stale name ranges that no longer apply to the current project. This may occur from making a new version of an older workbook, or copying worksheets from another workbook that has had a lot of work done on it. Sometimes you end up with a lot of name ranges with #REF and are completely stale and useless, meaning they should be deleted.
Note that this is not the same as a name range pointing to a cell with #REF value. This only deletes name ranges that no longer links to an actual cell because the cell or the worksheet has been deleted.
Delete All Visible Name Ranges
This version – we delete all name ranges that is visible (not hidden). The “n.Visible” is the property that determines whether a name range is visible or not.
Delete All Hidden Name Ranges
Very similar to the above, except we are look for name ranges that is hidden. This means .Visible property is set to false.
Do you find yourself manually choosing the right name ranges to delete? Are you trying to make different filter rules? Feel free to post in the comment section on how you delete your name ranges, and share your challenges.
2 people found this article useful This article was helpful
This article was helpful
2 people found this article useful
Leave a Reply
About Excel Help HQ
Excel Help HQ is created by a few frequent Excel users to share knowledge and help others on Excel problems. We focus on more obscure problems, memory aids and specialized vba macro scripts for other heavy Excel users. Feel free to click on any category on the right to find tips and tricks that will help you be better in Excel and other frequently used tools in the work place!
Источник
Vba excel удаление имен
= Мир MS Excel/Удаления списка имен — Мир MS Excel
Войти через uID
Войти через uID
Модератор форума: китин, _Boroda_
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Удаления списка имен (Формулы/Formulas)
Удаления списка имен
Anton1013 | Дата: Среда, 23.09.2015, 17:05 | Сообщение № 1 | ||||||
|
Удалить все кроме нужных именованные диапазоны |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
- Alex_L
- Начинающий
- Сообщения: 15
- Зарегистрирован: 21.12.2012 (Пт) 13:33
как удалить все имена на листе в Excel
Добрый день.
Пытаюсь применить команду
Activeworkbook.Names(i).delete ,
но при подстановке i в скобки программой считывается не имя, а диапазон его ячеек, и удаление имени невозможно.
Пытался задать текстом:
chr(34) & Activeworkbook.Names(i).Name & chr(34) ,
тоже не получается. Как правильно написать команду удаления имени без указания точного его названия? Имеется множество рабочих книг и в каждой — несколько имен на листе…
- Sam777e
- Продвинутый пользователь
- Сообщения: 157
- Зарегистрирован: 16.09.2010 (Чт) 4:33
Re: как удалить все имена на листе в Excel
Sam777e » 21.12.2012 (Пт) 17:23
- Код: Выделить всё
Sub InsertNames()
Range("A1").Select
ActiveCell.FormulaR1C1 = "Cell for Name #1" ' A1
ActiveWorkbook.Names.Add Name:="Name_1", RefersToR1C1:="=Sheet1!R1C1"Range("C2").Select
ActiveCell.FormulaR1C1 = "Cell for Name #2" ' C2
ActiveWorkbook.Names.Add Name:="Name_2", RefersToR1C1:="=Sheet1!R2C3"
End SubSub DeleteAllNames() ' <<<-----------------------
Dim j As LongWith ActiveWorkbook
For j = ActiveWorkbook.Names.Count To 1 Step -1
.Names(j).Delete
Next j
End With
End Sub
Здоровья и удачи
- Alex_L
- Начинающий
- Сообщения: 15
- Зарегистрирован: 21.12.2012 (Пт) 13:33
Re: как удалить все имена на листе в Excel
Alex_L » 10.01.2013 (Чт) 15:21
Спасибо. Работает
- Alex_L
- Начинающий
- Сообщения: 15
- Зарегистрирован: 21.12.2012 (Пт) 13:33
Re: как удалить все имена на листе в Excel
Alex_L » 11.01.2013 (Пт) 9:11
запустил вашу процедру как подпроцедуру своей, и выскочила ошибка: runtime error 1004
проверил название имени, которую макрос пытается удалить, имя следующее:
- Код: Выделить всё
?ActiveWorkbook.Names(j).Name
Excel_BuiltIn__FilterDatabase_1_1_1_1_1_1 1
почему вышла ошибка, есть идеи?
Спасибо
- Qwertiy
- Доктор VB наук
- Сообщения: 2753
- Зарегистрирован: 26.06.2011 (Вс) 21:26
Qwertiy » 11.01.2013 (Пт) 10:57
Alex_L писал(а):почему вышла ошибка, есть идеи?
Потому что оно системное?
Как и область печати, кстати. Она удаляется?
- Alex_L
- Начинающий
- Сообщения: 15
- Зарегистрирован: 21.12.2012 (Пт) 13:33
Re: как удалить все имена на листе в Excel
Alex_L » 11.01.2013 (Пт) 14:47
эти имена могу удалить вручную,
либо макросом, но не в цикле, а указав точно индекс имени, например
- Код: Выделить всё
Activeworkbook.Names(1).Delete
- Qwertiy
- Доктор VB наук
- Сообщения: 2753
- Зарегистрирован: 26.06.2011 (Вс) 21:26
Qwertiy » 11.01.2013 (Пт) 23:16
Не потому ли, что размер коллекции меняется по мере удаления?
- Template
- Обычный пользователь
- Сообщения: 73
- Зарегистрирован: 09.09.2006 (Сб) 18:03
Re: как удалить все имена на листе в Excel
Template » 12.01.2013 (Сб) 14:38
Alex_L, есть подозрение, что здесь можно узнать о причине возникновении ошибки.
- Alex_L
- Начинающий
- Сообщения: 15
- Зарегистрирован: 21.12.2012 (Пт) 13:33
Re: как удалить все имена на листе в Excel
Alex_L » 14.01.2013 (Пн) 15:58
Спасибо. да, это моя тема. только там решение не найдено. (
- Template
- Обычный пользователь
- Сообщения: 73
- Зарегистрирован: 09.09.2006 (Сб) 18:03
Re: как удалить все имена на листе в Excel
Template » 14.01.2013 (Пн) 20:40
Т.е. решение Alec пересохранить книгу в старом формате «Книга Microsoft Excel 5.0/95» не канает ?
- Alex_L
- Начинающий
- Сообщения: 15
- Зарегистрирован: 21.12.2012 (Пт) 13:33
Re: как удалить все имена на листе в Excel
Alex_L » 15.01.2013 (Вт) 8:05
Дело не в этом, у Samsonova ведь в итоге не все имена удалились…поэтому даже я не пробовал это решение. Наверное, Вы правы, стоит попробовать.
А у меня тоже странность: имена удаляются вручную или даже макросом, но в одной книге, а вот если макрос запускать в нескольких книгах, то ошибка опять вылезает… Причем, если я в застопорившейся книге запускаю макрос на удаление отдельно от других книг, то он срабатывает!
Вернуться в VBA
Кто сейчас на конференции
Сейчас этот форум просматривают: PetalBot и гости: 3
Предполагая, что вы создали много именованных диапазонов в своей книге, но теперь вам больше не нужны эти именованные диапазоны, как вы могли бы удалить все именованные диапазоны сразу в Excel?
- Удалите все именованные диапазоны, перейдя в Диспетчер имен
- Удалить все именованные диапазоны с кодом VBA
Удалите все именованные диапазоны, перейдя в Диспетчер имен
В диалоговом окне «Диспетчер имен» вы можете создавать, редактировать и удалять именованные диапазоны по своему усмотрению. Пожалуйста, сделайте так:
1, Перейти к Менеджер имен кликнув Формула > Менеджер имен, см. снимок экрана:
2. В Менеджер имен диалог, нажмите Shift клавишу, чтобы выбрать все названные диапазоны, или удерживайте Ctrl нажмите клавишу, чтобы выбрать те, которые вам не нужны, см. снимок экрана:
3, Затем нажмите Удалить в верхней части диалогового окна, и появится окно с напоминанием о том, что вы обязательно удалите имена.
4. Затем нажмите OK, все названные диапазоны были удалены сразу.
Найти и заменить все именованные диапазоны соответствующими ссылками на ячейки в формулах
Kutools for ExcelАвтора Заменить имена диапазонов Утилита может легко найти все формулы, применяющие именованные диапазоны в выбранном диапазоне, на указанном листе или на всех листах. И основная роль этой утилиты — заменить все именованные диапазоны соответствующими ссылками на ячейки в этих формулах.
Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30-день, кредитная карта не требуется! Get It Now
Удалить все именованные диапазоны с кодом VBA
Следующий короткий код VBA также может помочь вам удалить все именованные диапазоны в книге.
1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.
2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.
Код VBA: удалить все именованные диапазоны в Excel
Sub DeleteNames()
'Update 20140314
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
xName.Delete
Next
End Sub
3, Затем нажмите F5 ключ для запуска этого кода, все имена в книге будут немедленно удалены.
Статьи по теме:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (6)
Оценок пока нет. Оцените первым!