Страницы: 1
RSS
Проблемы с копированием листа., При копировании листа выдаёт сообщение "Имя.... уже существует".
 
Привет, уважаемые форумчане!

При копировании листа появляется сообщение, как в прилагаемом скрине.

Диспетчер имён пустой. Внешние связи удалены.
В 19-ом экселе проблему решает кнопка "Да для всех", в 16-ом этой кнопки нет, приходится выходить из экселя через диспетчер задач.
Несколько лет назад на форуме задавали этот вопрос, решить его предложили с помощью макроса.
Я хочу понять откуда берётся эта проблема и как решить её на корню. Файлы с такой проблемой постоянно приходят от коллег по работе. Что они делают не так?

Всем удачи!
 
Ваши коллеги тащат какую-то информацию из базы MySQL и потом отправляют файл вам. В этом файле скорее всего есть скрытое имя "LOCAL_MYSQL_DATE_FORMAT" (вы его глазами не видите). Когда вы копируете лист, то вместе с этим листом вы копируете и имя, вот Excel и ругается, что вы пытаетесь задвоить имя.
попробуйте перед копированием листа запустить этот макрос
Код
Sub DeleteName()
    Dim nName As Name
    On Error Resume Next
    For Each nName In ActiveWorkbook.Names
        If nName.Name = "LOCAL_MYSQL_DATE_FORMAT" Then nName.Delete
    Next nName
    For Each nName In ActiveSheet.Names
        If nName.Name = "LOCAL_MYSQL_DATE_FORMAT" Then nName.Delete
    Next nName
    On Error GoTo 0
End Sub
Изменено: New - 12.10.2023 20:13:59
 
Спасибо, но не работает!
 
Код
Sub DeleteNames()
    On Error Resume Next
    Debug.Print ActiveWorkbook.Names.Count
    Dim nn As Name
    For Each nn In ActiveWorkbook.Names
        nn.Delete
    Next
    Debug.Print ActiveWorkbook.Names.Count
    On Error GoTo 0
End Sub

Цитата
написал:
и как решить её на корню.
На корню не знаю, но, как вариант, можно удалять имена из файла, в который копируется лист. Диспетчер пустой, с какой-то вероятностью там имён нет.
 
копируете в ту же книгу, где находится сам копируемый лист?
в результате дублируется не только лист , но и все именованные диапазоны, которые в нем живут
а вот тут и возникает конфликт - не может в диспетчере имен жить два обьяета с одинаковыми именами
(как не может быть двух файлов с одинаковыми именами в одной папке
двух листов с одинаковыми именами в одной книге
двух переменных с одинаковыми именами в одной процедуре
....)
удаляйте ВСЕ имена ссылающиеся на диапазоны в копируемом листе, а потом уже копируйте лист, если после удаления имен не поломается логика работы листа и он останется сколько-нибудь пригодным для эжксплуатации))) (файла вашего никто не видел и что там за имена и для чего они нужны никто не знает)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
МатросНаЗебре,
Спасибо большое!
Сработало!
Изменено: Степан - 26.10.2023 10:16:55
Страницы: 1
Наверх