Notifications
Clear all

Como renomear várias planilhas

15 Posts
3 Usuários
0 Reactions
2,838 Visualizações
 PRMF
(@prmf)
Posts: 8
Active Member
Topic starter
 

Boa noite a todos.
Preciso de uma ajuda para resolver um problema que hoje me consome um bom tempo.
Como Renomear várias planilhas (sheets) já existentes (em torno de 50)
Os nomes que essas planilhas deverão ter estarão numa planilha qualquer na range A1, A2, A3, A4, etc.etc.

Agradeço a ajuda antecipadamente.

Paulo Farias

 
Postado : 08/12/2015 5:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite Paulo

Seja bem-vindo ao fórum!

Você deseja renomear as Planilhas de uma Pasta de Trabalho ou renomear várias Pastas de Trabalho?

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/12/2015 6:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite,

Caso queira renomear as planilhas de uma Pasta de Trabalho, veja se este código atende:

Sub RenomearPlanilhas()
    Dim QtdePlan As Integer
    Dim QtdeNomes As Integer
    Dim Nome As String
    Dim Ws As Worksheet
    Dim p As Integer
    
    'Quantidade de nomes a serem alterados
    QtdeNomes = Sheets("Planilha1").[A1].CurrentRegion.Rows.Count
    
    'Quantidade de Planilhas na Pasta de Trabalho
    QtdePlan = ActiveWorkbook.Sheets.Count
    
    'Verifica se a quantidade de nomes é maior que a de planilhas
    If QtdeNomes > QtdePlan Then
        MsgBox "Há mais nomes de planilhas do que planilhas. Verifique"
        Exit Sub
    End If
    
    'Percorre todas as planilhas da Pasta de Trabalho e as renomeia conforme
    'a lista de nomes na Planilha1. Não renomeia a Planilha1.
    'O nome das planilhas tem de estar na coluna A, a partir de A1, na planilha "Planilha1".
    p = 1
    For Each Ws In Worksheets
        If Ws.Name <> "Planilha1" Then
            Ws.Name = Sheets("Planilha1").Cells(p, 1).Value
            p = p + 1
        End If
    Next
End Sub

Se servir é só adaptar à sua necessidade.

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/12/2015 8:57 pm
 PRMF
(@prmf)
Posts: 8
Active Member
Topic starter
 

José, boa tarde!
Em primeiro lugar obrigado pela rapidez e qualidade da resposta.
Você entendeu corretamente minha necessidade, porém a solução apresentada está 99%.

Hoje trabalho com 50 planilhas e fui fazer um teste caso tenha de trabalhar com 60, ou seja, precisarei inserir mais 10 novas planilhas na pasta de trabalho.
Ele só aceita renomear quando insiro as novas abas ao lado direito da última planilha.
Se inserir uma nova aba entre as planilhas já existentes a rotina dá erro.

Agradeço se puder me ajudar nesse 1% que falta.
Abraço,

Paulo Farias

 
Postado : 09/12/2015 12:29 pm
 PRMF
(@prmf)
Posts: 8
Active Member
Topic starter
 

José, boa tarde!

Dá erro 1004 - erro em tempo de execução. Esse nome já foi usado, Escolha outro.
No código ele marca de amarelo o texto.

Ws.Name = Sheets("Planilha1").Cells(p, 1).Value

Porém não estou usando o mesmo nome.
Se quiser posso te mandar o arquivo...Grato,

 
Postado : 09/12/2015 3:23 pm
 PRMF
(@prmf)
Posts: 8
Active Member
Topic starter
 

José, fazendo uns testes e tentando resolver esse problema, percebi que preciso ter uma regra que as planilhas a serem renomeadas serão as planilhas à direita da Planilha1, pois terei planilhas à esquerda que não deverão ter seus nomes alterados.
Grato,

 
Postado : 09/12/2015 4:23 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde,

Veja se atende:

Sub RenomearPlanilhas()
    Dim QtdePlan As Integer
    Dim QtdeNomes As Integer
    Dim Nome As String
    Dim Ws As Worksheet
    Dim Numero As Integer
    
    'Quantidade de nomes a serem alterados
    QtdeNomes = Sheets("Planilha1").[A1].CurrentRegion.Rows.Count
    
    'Quantidade de Planilhas na Pasta de Trabalho
    QtdePlan = ActiveWorkbook.Sheets.Count
    
    'Verifica se a quantidade de nomes é maior que a de planilhas
    If QtdeNomes > QtdePlan Then
        MsgBox "Há mais nomes de planilhas do que planilhas. Verifique"
        Exit Sub
    End If
    
    'Percorre todas as planilhas da Pasta de Trabalho cujo número está na coluna A
    'da planilha "planilha1" e as renomeia conforme a lista de nomes na coluna B da Planilha1.
    'Não renomeia a Planilha1.
    'O número das planilhas tem de estar na coluna A, a partir de A1, na planilha "Planilha1"
    'e os nomes na coluna B.
       
    For i = 1 To QtdeNomes
        Numero = Sheets("Planilha1").Cells(i, 1).Value
        Nome = Sheets("Planilha1").Cells(i, 2).Value
        If Sheets(Numero).Name <> Nome And Sheets(Numero).Name <> "Planilha1" Then
            Sheets(Numero).Name = Nome
            p = p + 1
        End If
    Next
End Sub

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/12/2015 5:05 pm
 PRMF
(@prmf)
Posts: 8
Active Member
Topic starter
 

José Carvalho, bom dia!
Esse novo código está show.
Só falta a questão de não alterar algumas planilhas.
Tenho planilhas chamadas: CLIENTES, PRODUTOS e PARÂMETROS, que não deverão ser renomeadas.
Como fazer com que elas não tenham seus nomes alterados.

Obrigado pela paciência.

Abraço,
Paulo Farias

 
Postado : 10/12/2015 7:22 am
(@mprudencio)
Posts: 2749
Famed Member
 

Teste isso

If Sheets <> (Array("CLIENTES", "PRODUTOS", "PARAMETROS")) Then
For codigo ja existente

Next
End If

Ou seja a linha do if antes da linha do For e o End if apos o next.

PS nao testei mas deve funcionar.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 10/12/2015 7:39 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia,

É só você não colocar na lista, o nome das planilhas que não serão alteradas.
Se você tiver 50 planilhas e quer que apenas 47 sejam alteradas, é só relacionar estas.
Portanto não é necessário relacionar TODAS as planilhas.

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/12/2015 8:08 am
 PRMF
(@prmf)
Posts: 8
Active Member
Topic starter
 

José Carvalho, boa tarde!

Infelizmente não funcionou.
Mensagem "Erro de compilação. O argumento não é opcional"

Abraço,

 
Postado : 10/12/2015 11:29 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite,

Qual linha do código causou o erro?

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/12/2015 4:33 pm
 PRMF
(@prmf)
Posts: 8
Active Member
Topic starter
 

José Carvalho, bom dia! linha.

Deu erro nessa

If Sheets <> (Array("CLIENTES", "PRODUTOS", "PARAMETROS")) Then
For codigo ja existente

Grato,

 
Postado : 11/12/2015 4:38 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde,

Esta linha não está nos códigos sugeridos por mim.
No segundo código publicado é só NÃO INCLUIR na lista os nomes de planilhas que não devem ser alteradas.

Exemplo:

1 Teste
2 Dados
7 Informações

Colocando essas duas colunas na "Planilha1", a partir de A1, a primeira planilha será renomeada para "Teste", a segunda para "Dados" e a sétima para "Informações".
A terceira, quarta, quinta e sexta planilhas não serão renomeadas.

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/12/2015 11:34 am
 PRMF
(@prmf)
Posts: 8
Active Member
Topic starter
 

José Carvalho, boa noite.

Desculpe, cometi uma falha.
A linha com erro foi sugerida por outra pessoa.
Tentarei refazer o código.
Obrigado pela dedicação.

Abraço,

 
Postado : 11/12/2015 5:42 pm