Excel vba удалить все имена

 

vanya7819

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

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

Доброго времени суток! Подскажите, пожалуйста… Мне нужно удалить все имена в диспетчере имен.
На сайте нашел макрос, но он для моего файла не подходит.

Код
Sub DellAllName()
   Dim name As Object
    For Each name In ActiveWorkbook.Names
       name.Delete
   Next
End Sub

Файл должен иметь расширение  «*.xlsb», Имен очень много будет, хотелось бы макросом, если это возможно (с расширением «*.xlsm» — работает)
Спасибо!

Изменено: vanya781908.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

Charteris's user avatar

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

Slai's user avatar

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

matheus silveira's user avatar

Содержание

  1. Найдены скрытые имена
  2. Проблема
  3. Рекомендуемое решение
  4. Vba excel удаление имен
  5. How to Selectively Delete Name Ranges in Excel using a VBA macro?
  6. Delete All Name Ranges
  7. Delete All Name Ranges EXCEPT Print Area
  8. Delete All Name Ranges With #REF Value
  9. Delete All Visible Name Ranges
  10. Delete All Hidden Name Ranges
  11. Comments from the Reader
  12. Related Posts
  13. Leave a Reply
  14. About Excel Help HQ
  15. 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

Форумчане доброго дня!

Столкнулся с проблемой: в файле был очень большой и никому ненужный список имен ссылающийся на другие файлы. Список был удален, но после того как из одного файла иксель, где данный список был удален хотя бы 1 лист копируется в другой файл иксель, где этот список тоже был предварительно удален, в последнем он опять появляется. Это было бы не страшно, но список длинный и сильно загружает работу иксель, а его удаление занимает минут 5. Если кто-нибудь сталкивался с такой проблемой, подскажите как ее решить, вычищал файлы, копировал отдельно каждый лист, но проблема все равно остается

Форумчане доброго дня!

Столкнулся с проблемой: в файле был очень большой и никому ненужный список имен ссылающийся на другие файлы. Список был удален, но после того как из одного файла иксель, где данный список был удален хотя бы 1 лист копируется в другой файл иксель, где этот список тоже был предварительно удален, в последнем он опять появляется. Это было бы не страшно, но список длинный и сильно загружает работу иксель, а его удаление занимает минут 5. Если кто-нибудь сталкивался с такой проблемой, подскажите как ее решить, вычищал файлы, копировал отдельно каждый лист, но проблема все равно остается Anton1013

Сообщение Форумчане доброго дня!

Столкнулся с проблемой: в файле был очень большой и никому ненужный список имен ссылающийся на другие файлы. Список был удален, но после того как из одного файла иксель, где данный список был удален хотя бы 1 лист копируется в другой файл иксель, где этот список тоже был предварительно удален, в последнем он опять появляется. Это было бы не страшно, но список длинный и сильно загружает работу иксель, а его удаление занимает минут 5. Если кто-нибудь сталкивался с такой проблемой, подскажите как ее решить, вычищал файлы, копировал отдельно каждый лист, но проблема все равно остается Автор — Anton1013
Дата добавления — 23.09.2015 в 17:05

Serge_007 Дата: Среда, 23.09.2015, 18:38 | Сообщение № 2

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

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

Сообщение Anton1013, здравствуйте

Если Вам вообще не нужны имена в Excel, то можно в личную книгу макросов поместить макрос, который при открытии любой книги будет удалять из неё все имена. Это будет довольно быстро, хотя, конечно, решение не самое лучшее Автор — Serge_007
Дата добавления — 23.09.2015 в 18:38

Источник

Adblock
detector

Удалить все кроме нужных именованные диапазоны

Anis625

Дата: Четверг, 01.04.2021, 16:23 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 670


Репутация:

31

±

Замечаний:
0% ±


Excel 2013

Добрый день, всем участникам форума!
Прошу оказать содействие в правки моего кода «Франкенштейна»:
[vba]

Код

Sub DeleteExternalNames()
‘отображаем скрытые имена
Dim nName As Name
For Each nName In ActiveWorkbook.Names
   nName.Visible = True
Next nName
‘удаляем лишние имена
Dim n As Name
For Each n In Application.ActiveWorkbook.Names
    n.Delete
count = count + 1
Next n
MsgBox «Все имена в количестве » & count & » удалены»
End Sub

[/vba]
Этим кодом отображаю все скрытые имена и потом удаляю все именованные диапазона (т.к. при копировании листа всем известно что происходит с тысячами имен).
Но в некоторых файлах есть нужные именованные диапазоны (списки, умные таблицы, созданные в этой книге).
Попытался удалить только имена с ошибками:
[vba]

Код

For Each IName In ActiveWorkbook.Names
    If IName.RefersTo Like «*REF!*» Then
    IName.Delete ‘удаление имени с ошибками
    End If
Next

[/vba]
Но остаются имена с внешними ссылками или системными (которые подтянулись из файлов 1С).
На одном из сайте нашел что можно сделать «Если n.referestorange существует, и если n.referstorange.worksheet.parent is thisworkbook, то не удалять», но не понял как это вкрутить в свой код.
Буду признателен за любой совет.

 

Ответить

Anis625

Дата: Четверг, 01.04.2021, 16:33 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 670


Репутация:

31

±

Замечаний:
0% ±


Excel 2013

Пустой файл с лишними именованными диапазонами весит почти метр. Сделал архив из двух файлов

 

Ответить

Pelena

Дата: Четверг, 01.04.2021, 18:49 |
Сообщение № 3

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Попробуйте такой вариант, только сначала на копии файла)
[vba]

Код

Sub DeleteExternalNames()
‘отображаем скрытые имена
    Dim nName As Name
    For Each nName In ThisWorkbook.Names
        nName.Visible = True
    Next nName
    ‘удаляем лишние имена
    Dim n As Name, count As Long
    On Error Resume Next
    For Each n In ThisWorkbook.Names
        If InStr(n.RefersTo, «#») > 0 Or InStr(n.RefersTo, «\») > 0 Then
            n.Delete
            count = count + 1
        ElseIf Not n.RefersToRange.Worksheet.Parent Is ThisWorkbook Then
            n.Delete
            count = count + 1
        End If
    Next n
    MsgBox «Все имена в количестве » & count & » удалены»
End Sub

[/vba]


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Anis625

Дата: Четверг, 01.04.2021, 20:16 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 670


Репутация:

31

±

Замечаний:
0% ±


Excel 2013

Pelena,
Даже с решением. Спасибо Вам, попробую

 

Ответить

Anis625

Дата: Четверг, 01.04.2021, 21:30 |
Сообщение № 5

Группа: Проверенные

Ранг: Ветеран

Сообщений: 670


Репутация:

31

±

Замечаний:
0% ±


Excel 2013

Pelena,
Не срабатывает код. Буквально сразу после запуска выводится сообщение msgbox «Все имена в количестве 0 удалены»
Получается сразу отрабатывается строка[vba][/vba]

Сообщение отредактировал Anis625Четверг, 01.04.2021, 21:47

 

Ответить

Pelena

Дата: Четверг, 01.04.2021, 22:05 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Вот, что стало с Вашим файлом-примером, которыйпосле работы макроса. Как видите размер резко уменьшился

К сообщению приложен файл:

__—.xlsm
(27.4 Kb)


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Anis625

Дата: Четверг, 01.04.2021, 22:26 |
Сообщение № 7

Группа: Проверенные

Ранг: Ветеран

Сообщений: 670


Репутация:

31

±

Замечаний:
0% ±


Excel 2013

Pelena,
Странное дело — поместил код в «Личную книгу макросов» не работает. Поместил в модуль книги — работает. Из-за чего может быть так?
На счет размера — согласен, что в этом и была причина такого веса, поэтому и пытался решить задачку.

 

Ответить

Pelena

Дата: Четверг, 01.04.2021, 22:32 |
Сообщение № 8

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Если в личной книге макросов, надо заменить ThisWorkbook на ActiveWorkbook


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Anis625

Дата: Четверг, 01.04.2021, 22:40 |
Сообщение № 9

Группа: Проверенные

Ранг: Ветеран

Сообщений: 670


Репутация:

31

±

Замечаний:
0% ±


Excel 2013

Pelena,
Все отлично работает после замены. Спасибо Вам огромное.
Маленький (не критичный нюанс) только уточню. Код не отработал две ошибки (фото во вложении) из-за чего это может быть?

К сообщению приложен файл:

9304641.png
(12.7 Kb)

 

Ответить

Pelena

Дата: Четверг, 01.04.2021, 22:51 |
Сообщение № 10

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Удалите область печати с листа. Должно помочь.
Да и две ошибки можно и вручную удалить)


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Anis625

Дата: Четверг, 01.04.2021, 22:57 |
Сообщение № 11

Группа: Проверенные

Ранг: Ветеран

Сообщений: 670


Репутация:

31

±

Замечаний:
0% ±


Excel 2013

Pelena,
Пусто там. И при копировании листа именно на них и выводится сообщение о конфликте имен.
В них вроде есть символ # который указан в коде, по идее должен снести и его тоже код

К сообщению приложен файл:

0590472.png
(20.7 Kb)

 

Ответить

Anis625

Дата: Четверг, 01.04.2021, 23:15 |
Сообщение № 12

Группа: Проверенные

Ранг: Ветеран

Сообщений: 670


Репутация:

31

±

Замечаний:
0% ±


Excel 2013

Pelena,
Марокодером записал действие удаления например заголовков печати:[vba]

Код

ActiveWorkbook.Names(«Print_Titles»).Delete

[/vba]
После запуска отдельно этого кода — не удаляет. Странно

 

Ответить

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 Sub

Sub DeleteAllNames()           ' <<<-----------------------
  Dim j As Long

    With 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 наук
Доктор 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 наук
Доктор 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, Перейти к Менеджер имен кликнув Формула > Менеджер имен, см. снимок экрана:
doc-delete-named-range1

2. В Менеджер имен диалог, нажмите Shift клавишу, чтобы выбрать все названные диапазоны, или удерживайте Ctrl нажмите клавишу, чтобы выбрать те, которые вам не нужны, см. снимок экрана:
doc-delete-named-range1

3, Затем нажмите Удалить в верхней части диалогового окна, и появится окно с напоминанием о том, что вы обязательно удалите имена.
doc-delete-named-range1

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

Найти и заменить все именованные диапазоны соответствующими ссылками на ячейки в формулах

Kutools for ExcelАвтора Заменить имена диапазонов Утилита может легко найти все формулы, применяющие именованные диапазоны в выбранном диапазоне, на указанном листе или на всех листах. И основная роль этой утилиты — заменить все именованные диапазоны соответствующими ссылками на ячейки в этих формулах.

объявление заменить именованный диапазон 1

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-дневная гарантия возврата денег.

вкладка kte 201905


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

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

офисный дно

Комментарии (6)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Excel vba удалить буквы
  • Excel vba удалить shape
  • Excel vba удаление ячейки
  • Excel vba удаление строки умной таблицы
  • Excel vba удаление строк умной таблицы