Abra o Gerenciador de Nomes e localize os itens nomeados que estão sendo reclamados e exclua todos aqueles com o escopo Workbook
e o problema com a cópia das planilhas desaparece e as fórmulas permanecem intactas.
Eu tenho trabalhado em uma planilha do Microsoft Excel 2007 por vários dias. Estou trabalhando em um modelo mestre como uma folha e copiando-o para uma nova folha repetidamente. Até hoje, isso estava acontecendo sem problemas. No entanto, no meio de hoje isso de repente mudou e eu não sei porque. Agora, sempre que tento copiar uma planilha, recebo cerca de dez diálogos, cada um com um objeto de intervalo de nome diferente (mostrado abaixo como 'XXXX') e clico em sim para cada um:
A formula or sheet you want to move or copy contains the name 'XXXX', which already exists on the destination worksheet. Do you want to use this version of the name?
- To use the name as defined in destination sheet, click Yes.
- To rename the range referred to in the formula or worksheet, click No, and enter a new name in the Name Conflict dialog box.
Os objetos de intervalo de nome se referem a células na planilha. Por exemplo, E6
é chamado intervalo de nome PRE
em várias planilhas (e tem sido o tempo todo) e algumas das fórmulas se referem a PRE
em vez de $E$6
. Um dos 'XXXX' acima é este PRE
. Esses intervalos de nome só devem ser resolvidos na planilha em que aparecem. Este não foi um problema antes, apesar do mesmo intervalo de nomes existente em várias planilhas antes. Eu quero manter meus intervalos de nomes.
O que poderia ter mudado na minha planilha para causar essa mudança de comportamento? Eu voltei para as folhas anteriores criadas dessa maneira e agora elas também passam a mensagem quando copiadas. Eu tentei um computador diferente e um usuário diferente e o mesmo comportamento é visto em todos os lugares. Eu só posso concluir algo na planilha mudou. O que isso poderia ser e como posso recuperar o antigo comportamento, por meio do qual posso copiar folhas com intervalos de nome e não receber nenhum aviso?
Olhando no Name Manager
, vejo que os intervalos de nomes que estão sendo reclamados mostram duas vezes, uma vez como escopo Template
e novamente como escopo Workbook
. Se eu excluir o escopo Template
ones, o aviso desaparece na cópia, no entanto, recebo um monte de erros #REF. Se eu excluir o escopo Workbook
ones, tudo parece bem e os avisos na cópia vão embora também, então talvez essa seja a resposta, mas estou nervosa sobre o efeito que essa exclusão terá e saber como os Workbook
vieram em existência em primeiro lugar.
Será seguro excluir apenas as entradas do escopo do gerenciador de nomes Workbook
e como elas podem ter surgido sem que eu saiba inicialmente?
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
Isso não é um erro, mas um aviso de que existe um conflito e oferece uma escolha sobre o que fazer
Quando você copia um intervalo que inclui referência a um intervalo nomeado (geralmente no escopo da planilha) e esse mesmo nome existe na planilha de destino, como o Excel saberá qual nome você deseja usar no resultado?
Quanto ao que foi alterado, sugiro que você revise todos os nomes em sua pasta de trabalho, especialmente para o escopo.
Gerenciador de nomes - Ctrl-F3
Esses nomes são principalmente o resultado de um download de dados por meio de uma API de terceiros. As APIs normalmente usam esses nomes como espaços reservados para referência de célula.
Depois de processar alguns dados, esses nomes são deixados na maioria das vezes como um usuário geral não limpa as folhas ocultas (ou muito ocultas). A dificuldade associada a esses nomes é que eles também não aparecem na caixa NAMES e, portanto, não podem ser excluídos por meio dessa opção.
Uma maneira que eu faço é programá-lo através de um script VBA. Amostra abaixo
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
Observe que esse script excluirá TODOS os nomes da pasta de trabalho, portanto, se houver determinados nomes definidos que você gostaria de manter, insira as exceções no código.
Se alguém tiver uma solução mais eficiente, informe-nos.
O mesmo problema aqui com 27 misteriosos intervalos nomeados. Eu usei Ctrl + F3 (como recomendado em outra resposta) para ver a lista de intervalos nomeados (que eu nunca tinha configurado!). Havia muitos desde que eu estava copiando a guia da planilha várias vezes e apenas clicando em "sim" para contornar a mensagem. Eu destaquei e excluí todos os intervalos nomeados (uma tela pequena de cada vez, não era possível selecionar tudo). Na próxima vez que tentei copiar a planilha, a cópia foi bem-sucedida sem a mensagem de aviso.
Não deixe de copiar o arquivo original antes de tentar isso.
Eu tive o mesmo problema e tentei cada solução fornecida, com sucesso variável:
1) Eu abri o Gerenciador de Nomes e, com certeza, havia um monte de Nomes que eu nunca criei; no entanto, eles não eram os nomes que estavam sendo avisados. Eu os deletei de qualquer forma para me livrar da desordem, mas essa não foi a solução.
2) Eu tentei o código fornecido pelo Viquar (iniciar "Sub do_loops_names"). Acho que parte do código foi perdido, porque não consigo ver como ele realmente faz alguma coisa e, com certeza, nada aconteceu.
3) Eu tentei o código fornecido pelo user345338 (começa com "Sub TOOLS _...") - PERFECT . Ele me levou através de todos os nomes escondidos que de alguma forma estavam presos na pasta de trabalho e os apagou. Muito obrigado, user345338 (quem quer que seja!).
BTW, to "codea" - o código do user345338 não é "inútil", pois resolveu o meu problema.
Tags microsoft-excel-2007