2012-09-14 20:31:52 +0000 2012-09-14 20:31:52 +0000
7
7

Почему Excel теперь дает мне уже существующее предупреждение о диапазоне имен на листе копирования?

Я несколько дней работал над таблицей Microsoft Excel 2007. Я работаю с мастер-шаблоном вроде листа и многократно копирую его на новый лист. До сегодняшнего дня это происходило без проблем. Однако в середине сегодняшнего дня все внезапно изменилось, и я не знаю почему. Теперь, всякий раз, когда я пытаюсь скопировать лист, я получаю около десяти диалоговых окон, каждый из которых имеет свой объект с разным диапазоном имен (показан ниже как ‘XXXX’), и я нажимаю “да” для каждого из них:

Формула или лист, который вы хотите переместить или скопировать, содержит имя ‘XXXX’, которое уже существует на листе назначения. Вы хотите использовать эту версию имени?

  • Чтобы использовать имя, как определено на листе назначения, нажмите Да.
  • Чтобы переименовать диапазон, упомянутый в формуле или листе, нажмите Нет, и введите новое имя в диалоговом окне Конфликт имен.

Объекты диапазона имен относятся к ячейкам на листе. Например, E6 называется диапазоном имен PRE на нескольких листах (и так было всегда), и некоторые формулы ссылаются на PRE, а не на $E$6. Один из ‘XXXX’ выше - это PRE. Эти диапазоны имен должны разрешаться только внутри листа, в пределах которого они появляются. Раньше эта проблема не возникала, несмотря на то, что один и тот же диапазон имен ранее существовал на нескольких листах. Я хочу сохранить свои диапазоны имен.

Что могло измениться в моей электронной таблице, чтобы вызвать такое изменение в поведении? Я вернулся к предыдущим созданным таким образом листам, и теперь при копировании они тоже выдают сообщение. Я попробовал другой компьютер и другого пользователя, и повсюду видно одно и то же поведение. Я могу только заключить, что что-то в электронной таблице изменилось. Что это может быть и как я могу вернуть старое поведение, при котором я могу копировать листы с диапазонами имен и не получать никаких предупреждений?

Глядя в Name Manager я вижу, что диапазоны имен, на которые жалуются, показываются дважды, один раз в качестве области видимости Template и снова в качестве области видимости Workbook. Однако если я удалю области видимости Template, предупреждение исчезнет при копировании, я получу кучу ошибок #REF. Если я удалю области видимости Workbook, все выглядит нормально, и предупреждения на копии тоже исчезают, так что, возможно, это и есть ответ, но я нервничаю по поводу того, какой эффект будет иметь это удаление, и задаюсь вопросом, как же вообще появились области видимости Workbook.

Будет ли безопасно просто удалить записи, просмотренные менеджером имен Workbook, и как они могли появиться, если я не знал об этом для начала?

Ответы (6)

6
6
6
2012-09-14 20:51:03 +0000

Откройте Менеджер имен и найдите именованные элементы, на которые жалуются, и удалите все элементы с областью Workbook, и проблема с копированием листов исчезнет, а формулы останутся нетронутыми.

5
5
5
2014-07-11 09:59:53 +0000
Sub TOOLS_DELETENAMEDRANGE()

  Dim nm As name
  On Error Resume Next

  For Each nm In ActiveWorkbook.Names
    If (MsgBox("Delete name- " & nm.name, vbYesNo) = vbYes) Then  
      nm.Delete
    End If
  Next

  On Error GoTo 0

End Sub
2
2
2
2012-09-14 20:52:04 +0000

Это не ошибка, но предупреждение о конфликте существует и предлагает выбор, что делать

Когда вы копируете диапазон, который включает в себя ссылку на (обычно область видимости на листе) с именем диапазона, и это же имя существует на листе назначения, как Excel узнать, какое имя вы хотите использовать в результате?

Что касается того, что изменилось, я предлагаю вам просмотреть все имена в вашей рабочей книге, особенно для диапазона.
Менеджер имен - Ctrl-F3

1
1
1
2013-11-04 08:47:47 +0000

Эти имена в основном являются результатом загрузки данных через сторонний API. API обычно используют эти имена в качестве держателей ссылок на ячейки.

После того, как вы обработали некоторые данные, эти имена в основном остаются позади, поскольку обычный пользователь не очищает скрытые (или очень скрытые) листы. Сложность, связанная с этими именами, заключается в том, что они также не отображаются в поле NAMES и поэтому не могут быть удалены через эту опцию.

Один из способов, которым я могу это сделать, это запрограммировать его с помощью скрипта VBA. Пример ниже

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

Обратите внимание, что этот скрипт удалит ВСЕ имена из рабочей книги, так что если есть определенные имена, которые вы хотите сохранить, пожалуйста, вставьте исключения в код.

Если у кого-то есть более эффективное решение, пожалуйста, дайте мне знать.

0
0
0
2015-02-20 22:03:14 +0000

У меня была одна и та же проблема, и я пробовал каждое решение с разным успехом:

1) Я открыл Names Manager и, конечно, там была куча имен, которые я никогда не создавал; однако, это были НЕ те имена, о которых меня предупреждали. Я удалил их в любом случае, чтобы избавиться от беспорядка, но это не было решением.

2) Я попробовал код, предоставленный компанией Viquar (начните с “Sub do_loops_names”). Я думаю, часть кода была пропущена, потому что я не вижу, как он на самом деле что-то делает и, конечно же, ничего не случилось.

3) Я попробовал код, предоставленный пользователем345338 (начинается с “Sub TOOLS_…”) - PERFECT. Он провел меня через все скрытые имена, которые каким-то образом застряли в рабочей книге, и удалил их. Большое спасибо, user345338 (кто бы вы ни были!).

BTW, к “кодеа” - код user345338 не “бесполезен”, так как он решил мою проблему.

0
0
0
2013-07-01 18:49:58 +0000

Та же проблема и с 27 загадочными названными диапазонами. Я использовал Ctrl+F3 (как рекомендовано в другом ответе) для просмотра списка именованных диапазонов (которые я никогда не устанавливал!). Их было много с тех пор, как я много раз копировал вкладку рабочего листа и просто нажимал “да”, чтобы обработать сообщение. Я выделил и удалил все названные диапазоны (по одному маленькому экрану за раз, не мог выбрать все). В следующий раз, когда я попытался скопировать рабочий лист, копирование прошло без предупреждения.

Обязательно скопируйте исходный файл, прежде чем пытаться это сделать.

Похожие вопросы

8
4
3
9
3