Страницы: 1
RSS
Конфликт имен при копировании листа
 
День добрый, помогите разобраться. При копировании листа в файле возникает конфликт имен, при этом имен с такими названиями нет в диспетчере?

извините рисунок не прошел скан в эксель файле, файл с проблемой дозалил
Изменено: Vik_tor - 08.02.2017 21:10:45 (+файл)
 
Выполните в проблемной книги эти два макроса
Код
'посмотреть ИМЕНА книги
Sub PutNames()
Dim Nm As Name
Dim stNames As String
For Each Nm In ThisWorkbook.Names
    If stNames <> Empty Then
        stNames = stNames & ", " & Nm
    Else
        stNames = Nm
    End If
Next
MsgBox stNames
End Sub

'удалить ВСЕ имена из книги
Sub DelNames()
Dim Nm As Name
Dim stNames As String
For Each Nm In ThisWorkbook.Names
    Nm.Delete
Next
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Спасибо, сейчас попробую, но у меня в реальной книге есть и нужные имена
 
Тогда с удаление аккуратнее. При переборе, в макросе, проверяйте на 'нужность'
Согласие есть продукт при полном непротивлении сторон
 
Уважаемый Sanja, я увы не макросовед, не могли бы вы вставить в ваш макрос проверку перед удалением очередного имени в цикле.
 
Код
'удалить имена из книги кроме...
Sub DelNames()
Dim Nm As Name
Dim stNames As String
On Error Resume Next
arrNames = Array("Имя_1", "Имя_2", "Имя_3") 'замените на свои Имена
With CreateObject("Scripting.Dictionary")
    For I = 0 To UBound(arrNames)
        .Add arrNames(I), arrNames(I)
    Next
For Each Nm In ThisWorkbook.Names
    If Not .Exists(Nm.Name) Then Nm.Delete
Next
End With
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Спасибо большое. Имена берутся (как я понял) при перенесении листов из других книг, а можно ли избежать переноса при этом  имен, тем более скрытых?
 
Удалять имена перед копированием листа
Копировать/переносить не лист, а данные
Согласие есть продукт при полном непротивлении сторон
 
Совет принят исполнению, еще раз спасибо.
 
Sanja, огромное спасибо за ответ по этой теме.

Как еще один человек, не умеющий в макросы, хотел спросить, а что нужно прописать, чтобы макрос DelNames игнорировал ошибки о недопустимости имен (Runtime error 1004).

Не во всех моих книгах вышеприведенные макросы отрабатывают, некоторые завершаются с этой ошибкой.  
 
Цитата
Dollar_Bill: что нужно прописать
можно просто пропуск ошибок добавить: On Error Resume Next
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Коллеги, данный макрос рушит связи с другими файлами (через запрос power query)  :(
сохраняет файл, а при повторном открытии, ругается на повреждение, и восстанавливает без связей

можете обновить макрос, чтобы не убивал связи с другими файлами (через формулы) и через PQ
Изменено: Дмитрий Богданов - 03.03.2024 17:45:33
Страницы: 1
Наверх