About Me

A minha foto
JRod - PORTUGAL
Microsoft [MVP] - Excel (10º ano consecutivo)
Ver o meu perfil completo
Com tecnologia do Blogger.

Seguidores

Estatisticas

Free Blog Counter

eXTReMe Tracker
2009-03-23

Há dias, num grupo de discussão de Excel, foi colocada a seguinte questão (adaptada):

Pressupostos:
- Tenho uma folha de cálculo "Clientes" com uma lista de clientes;
- Tenho uma folha de cálculo "Modelo" que é um modelo;

 
Problema:
- preciso criar folhas de cálculo iguais à folha "Modelo", mas com os nomes constantes da lista de clientes da folha "Clientes".

Alguém me pode ajudar?

 

Tomemos o seguinte exemplo ilustrativo:

O que temos:

a) Uma folha, denominada “Modelo”

image

b) Uma folha, denominada “Clientes”

image

O que pretendemos, será ter tantas folhas, quantos os nomes que se encontram na folha Clientes, com o nome de cada um deles no tabulador, mas com o conteúdo da folha “mestra” - “Modelo”.

Para uma melhor ilustração, suponhamos que dos 18 nomes, apenas pretendemos obter 6 folhas (de A1:A6), ou seja, de “Manuel a Jorge”. Então, o resultado seria:

 

image

Ou seja, todas as 6 folhas, criadas e já renomedas com os nomes pretendidos, teriam como conteúdo, o conteúdo da folha “Modelo”.

O Código, que executaremos em primeiro lugar e que dará para criar o número de folhas pretendido:

Private Sub Copia_Modelo()

    Dim sNum As Integer
    On Error Resume Next

    sNum = InputBox("Quantos Clientes?")

    For i = sNum To 1 Step -1
        
        Sheets("Modelo").Select
        Sheets("Modelo").Copy Before:=Sheets(1)

    Next

    Sheets("Clientes").Select
End Sub


Agora o código que executaremos em 2º lugar e que renomeará as folhas criadas anteriormente, com os nomes correspondentes ao número de clientes que estabelecemos com o Código anterior:

Private Sub Renomear_Folhas()


    On Error Resume Next


    For i = 1 To Worksheets.Count - 2
        Sheets(i).Name = Worksheets("Clientes").Cells(i, 1).Value
    Next i


End Sub

 

Por último, o Código que, por uma questão de comodidade, dá para apagar todas as folhas anteriormente criadas e renomeadas, ficando sempre e só, as folhas “Modelo” e “Clientes”:

Sub Delete_Sheets()


    Dim sNum As Integer
    On Error Resume Next

    Application.DisplayAlerts = False

    sNum = Worksheets.Count - 2

    For i = sNum To 1 Step -1
        Sheets(1).Select
        Sheets(1).Delete
    Next


    Application.DisplayAlerts = True

    Sheets("Modelo").Select

End Sub


Nota final: As folhas “Modelo” e “Clientes”, deverão ficar sempre na sequência em que se encontram no exemplo, ou seja, as duas últimas, à direita.

 

Tópicos relacionados: