Я думаю вы уже сталкивались с такой
проблемой при работе в Excel,
когда вы копируете лист Excel,
то при создании копии листа вы получаете
окно «Конфликт имен» (Смотрите рисунок
1). Картинка взята с сайта.
Рисунок 1. Окно "Конфликт имен"
Данная проблема связана с тем, что в окне «Диспетчер имен» (открывается при нажатии сочетания клавиш Ctrl+F3), который можно открыть на ленте во вкладке «Формулы», раздел «Определенные имена», созданы большое число именованных диапазонов, они и конфликтуют при копирование листа. Эти именованные диапазоны создаются при генерации отчета в каких-нибудь бухгалтерских приложениях. Чтобы лист скопировать без этого окна «Конфликт имен», то вам необходимо в окне «Диспетчер имен» удалить все именованные диапазоны, которые там есть. Но, даже если вы удалите все эти именованные диапазоны, то этого будет не достаточно, так как существуют скрытые именованные диапазоны, которые не видны в окне «Диспетчер имен» и поэтому вам необходимо воспользоваться специальным VBA-макросом, который удалит все скрытые именованные диапазоны. Для того чтобы создать и запустить макрос, вам необходима для начала включить вкладку «Разработчик» на ленте. Для этого зайдите в меню параметры
(смотрите рисунок 2), в окне параметров
Excel в разделе «Настроить
ленту» вам нужно включить вкладку
«Разработчик» (смотрите рисунок 3).
Рисунок 2. Открытие окна "Параметры Excel"
Рисунок 3. Окно "Параметры Excel"
Далее во вкладке разработчик нажмите
кнопку «Visual Basic» (смотрите
рисунок 4).
Рисунок 4. Вкладка "Разработчик" на ленте
В приложение
“Microsoft Visual Basic for Applications” на панели проектов дважды нажмите левой кнопкой мыши по разделу «Эта книга» в проекте
VBAProject (Книга1
) (смотрите рисунок 5 цифра 1)
, то откроется окно ввода
VBA-кода (смотрите рисунок 5 цифра 2). Скопируйте и вставьте в это окно следующий код, который я взял с этой
страницы.
Рисунок 5. Окно приложения “Microsoft Visual Basic for Applications”
Sub do_loop_names()
Dim vJunkName As
Name
Debug.Print
ThisWorkbook.Names.Count
For Each
vJunkName In ThisWorkbook.Names
vJunkName.Delete
Next vJunkName
End Sub
Запустите данный код
на исполнение (смотрите
рисунок 5 цифра
3).
После того как
код отработает, все скрытые именованные
диапазоны будут удалены и вы сможете
копировать листы Excel
без всяких
проблем, и не
будите получать
окно «Конфликт имен».
На
этой странице
https://kompsekret.ru/q/why-does-excel-now-give-me-already-existing-name-range-warning-on-copy-sheet-24247/
вы можете взять
другой пример VBA-кода
для очистки именованного диапазона.