Копирование именованных диапазонов (Microsoft Excel)
У Грэма есть книга, в которой определено большое количество (более 120) именованных диапазонов. Он хотел бы скопировать имена и определения диапазонов в другую книгу. Таким образом, после копирования диапазон с именем MyRange1, который относится к диапазону C7: H22 в исходной книге, будет существовать в целевой книге и относиться к тому же диапазону в целевой книге.
Ничего другого не следует копировать из исходной книги в целевую — только имена диапазонов и определения.
Самый простой способ сделать это — использовать макрос, который проходит через каждое из заданных вами имен и копирует определение имени в целевую книгу. Вот пример:
Sub CopyNames() Dim Source As Workbook Dim Target As Workbook Dim n As Name Set Source = ActiveWorkbook Set Target = Workbooks("Book2.xlsx") For Each n In Source.Names Target.Names.Add Name:=n.Name, RefersTo:=n.Value Next End Sub
Обратите внимание, что большая часть работы в макросе выполняется в цикле For Each, который проходит через все определенные имена. Он создает имя в целевой книге и присваивает ей то же назначение, что и в исходной книге (содержится в свойстве Value).
Следует отметить, что по умолчанию именованные диапазоны включают имя рабочего листа в свойстве Value. Если у исходной книги есть именованный диапазон, который относится, например, к Sheet4, и в целевой книге нет Sheet4, то добавить имя не удастся. Макрос не генерирует ошибку; он просто не создает новый именованный диапазон. Решение состоит в том, чтобы (а) убедиться, что целевая книга содержит те же имена листов, что и исходная книга, или (б) изменить макрос так, чтобы он распознал отсутствие листов и предпринял все необходимые действия.
Если вы предпочитаете не создавать макрос, то самым простым способом может быть копирование ваших листов из исходной книги в целевую.
Excel обычно копирует именованные диапазоны вместе с листами. Единственный раз, когда это не будет удовлетворительным подходом, — это если в целевой книге уже есть листы с такими же именами, что и те листы, которые вы, возможно, захотите скопировать. В этом случае лучше всего использовать подход макроса.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (8811) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Copying_Named_Ranges [Копирование именованных диапазонов]
.