Страницы: 1
RSS
копирование именованных диапазонов
 
Подскажите, плиз, есть ли возможность скопировать имена диапазонов  из одной книги в другую.  
Понимаю что копать надо где-то здесь ThisWorkbook.ActiveSheet.Names
 
я так посмотрел, наверное все таки надо смотреть ThisWorkbook.Names
 
На мой взгляд вопрос сформулирован странно: зачем копировать имена именованных диапазонов? Другое дело, если, к примеру, имя привязано к группе ячеек и требуется перенести их...
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Попробуйте так:  
 
Sub CopyNames()  
Dim n As Name  
For Each n In ThisWorkbook.Names  
ИмяКниги.Names.Add Name:=n.Name, RefersToR1C1:=n.RefersToR1C1  
Next n  
End Sub  
 
где ИмяКниги -  имя книги в которую копируем имена.
Редко но метко ...
 
При этом книга в которую копируем должна быть открыта
Редко но метко ...
 
{quote}{login=nerv}{date=14.07.2011 10:39}{thema=}{post}На мой взгляд вопрос сформулирован странно: зачем копировать имена именованных диапазонов? Другое дело, если, к примеру, имя привязано к группе ячеек и требуется перенести их...{/post}{/quote}  
по моему это одно и тоже. Ну допустим есть имена, привязанные к группе ячеек, вот их и надо перенести.
 
Можно вот так попробовать (для простоты в исходной книге только один лист)  
 
Sub qwert()  
   Dim wb As Workbook  
   Set wb = Workbooks.Add(1)  
   Dim n As Name  
   For Each n In ThisWorkbook.Names  
       wb.Names.Add Name:=n.Name, RefersTo:=Replace(n.RefersTo, ThisWorkbook.Sheets(1).Name, wb.Sheets(1).Name)  
   Next  
End Sub  
 
 
 
To GIG_ant  
Если не ошибаюсь, тогда еще и названия листов должны совпадать
 
{quote}{login=GIG_ant}{date=14.07.2011 10:43}{thema=}{post}При этом книга в которую копируем должна быть открыта{/post}{/quote}  
Это понятно, спасибо.  
судя по коду, похоже то что надо.
 
{quote}{login=webley}{date=14.07.2011 10:47}{thema=}{post}Если не ошибаюсь, тогда еще и названия листов должны совпадать{/post}{/quote}  
 
Категорически с вами согласен )
Редко но метко ...
 
Во прикол!  
Если скопировать таким образом имя, которое ссылается на несуществующий лист, имя создается, но его значение, ессно, равно ошибке #ЗНАЧ!  
Теперь, если создать лист с соотв. именем, то имя заработает ТОЛЬКО в VBA: можно использовать диапазон range("имя") или names("имя").RefersTorange или [имя], но его нельзя выделить: [имя].select дает ошибку.
И на листе использование этого имени приводит к ошибке.  
При выборе имени в Диспетчере имен диапазон даже выделяется на листе, но ошибка не пропадает.  
 
Теперь можете загадывать загадку знатокам Excel - как добиться состояния, показанного на рисунке: :))
 
что я делаю не так?  
Workbooks(nname).Add Name:=n.Name, RefersToR1C1:=n.RefersToR1C1  
на этом месте ругается, что объект не поддерживает данное свойство или метод
 
{quote}{login=nerv}{date=14.07.2011 10:39}{thema=}{post}На мой взгляд вопрос сформулирован странно: зачем копировать имена именованных диапазонов? {/post}{/quote}  
Я тоже не понимаю: зачем копировать ИМЕНА. Другое дело - копировать именованный диапазон...
 
{quote}{login=roka}{date=14.07.2011 11:53}{thema=}{post}что я делаю не так?  
Workbooks(nname).Add Name:=n.Name, RefersToR1C1:=n.RefersToR1C1  
на этом месте ругается, что объект не поддерживает данное свойство или метод{/post}{/quote}  
 
Может так?  
Workbooks(nname).NAMES.Add Name:=n.Name, RefersToR1C1:=n.RefersToR1C1
 
аааааааааа, спасибо, проглядел
 
Всем спасибо, все что мне надо было, получилось. В результате полистного копирования одной книги в другую формулы с применением имен диапазонов работают корректно.
 
Если все же захотите копировать не только имена, но и диапазоны, на которые ссылаются эти имена, посмотрите тут: http://www.planetaexcel.ru/forum.php?thread_id=18728
 
Спасибо, посмотрю.  
Так то, у меня все скопировано, не хватало имен.
Страницы: 1
Наверх