Ir ao conteúdo

Listar abas no excel


proeletrica

Posts recomendados

Postado

Bom dia colegas

Como posso fazer uma listagem a partir dos nomes das abas das planilhas? Esta listagem será o conteúdo de uma outra planilha dentro da mesma pasta.Deu para entender?

Postado

Patropi

Minha situação é a seguinte:

Tenho uma pasta com 3 planilhas que são:rosa, cravo e tulipa.

Gostaria de gerar uma quarta planilha, onde A1 seria Rosa, A2 cravo e A3 tulipa. Isto com uma macro, pois caso eu criar nova aba, o nome desta nova aba seria A4, e assim por diante.Ficou um pouco mais claro?

Postado

no seu post que você colocou logo ali em cima, você disse que quer fazer uma macro.

tenta colocar e testar esse código na macro, pois vai fazer com que os nomes apareçam numa caixa de mensagem.

Code Snippet

Sub Nomes_Planilhas()

Dim Planilha As Worksheet

Dim Mensagem As String

For Each Planilha In ThisWorkbook.Worksheets

Mensagem = Mensagem & Planilha.Name & vbLf

Next Planilha

MsgBox Mensagem

End Sub

qualquer coisa da um toque.

Postado

Mateussi

Esta macro realmente funciona e faz com que o nome das abas apareçam numa caixa de mensagem.

Mas o que eu preciso é que o nome das abas sejam o conteúdo de outra planilha , quando é cionado o botão da macro.

Se alguem souber como fazer isto, favor postar!!!!!

Postado

o código abaixo cria uma lista com os nomes das planilhas do arquivo, na planilha 'ListaPlans', a partir de A1, e atribui 'Hyperlinks'; a lista será atualizada toda vez que a planilha 'ListaPlans' for selecionada

1. crie e nomeie uma planilha ListaPlans (se colocar outro nome altere no código)

2. clique com o direito na guia dessa planilha e escolha Exibir Código

3. cole o código na janela em branco que se abrirá, Alt+F11 para retornar à planilha

Private Sub Worksheet_Activate()
Dim ws As Worksheet, i As Integer
Application.ScreenUpdating = False
Sheets("ListaPlans").Range("A:A").ClearContents
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "ListaPlans" Then
i = i + 1
Sheets("ListaPlans").Range("A" & i).Value = ws.Name
Sheets("ListaPlans").Hyperlinks.Add Anchor:=Range("A" & i), _
Address:="", SubAddress:="'" & ws.Name & "'!A1", TextToDisplay:=ws.Name
End If
Next ws
Application.ScreenUpdating = True
End Sub

para não atribuir os 'Hyperlinks' deletar a linha abaixo no código

Sheets("ListaPlans").Hyperlinks.Add Anchor:=Range("A" & i), _
Address:="", SubAddress:="'" & ws.Name & "'!A1", TextToDisplay:=ws.Name

Postado

Osvaldomp

É exatamente isto que preciso.

Abusando um pouco;

Além de levar o nome da planilha (a partir de A1), tem como levar o conteúdo de uma celula( sempre a mesma posição) e colocar a partir de A2 na listaplans ?

Postado

por ex., se for a célula M10 a ser 'levada' o resultado que você espera seria este?

A1 = Plan1

A2 = Plan1!M10

A3 = Plan2

A4 = Plan2!M10

A5 = Plan3

A6 = Plan3!M10

. . .

Postado

Osvaldomp

Desculpe, no meu post eu errei,a posição correta deverá ser B1 ao invés de A2.

por ex., se for a célula M10 a ser 'levada' o resultado seria este:

A1 = Plan1

B1 = Plan1!M10

A2 = Plan2

B2= Plan2!M10

A3 = Plan3

B3 = Plan3!M10

Postado
Private Sub Worksheet_Activate()
Dim ws As Worksheet, i As Integer
Application.ScreenUpdating = False
Sheets("ListaPlans").Range("A:B").ClearContents
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "ListaPlans" Then
i = i + 1
With Sheets("ListaPlans")
.Range("A" & i) = ws.Name
.Hyperlinks.Add Anchor:=Range("A" & i), _
Address:="", SubAddress:="'" & ws.Name & _
"'!A1", TextToDisplay:=ws.Name
.Range("B" & i) = "=" & ws.Name & "!M10"
End With
End If
Next ws
Application.ScreenUpdating = True
End Sub

Postado

Bom dia Osvaldomp

Com esta nova macro, continua fazendo somente a primeira parte que é fazer a listgem a partir de A1, mas não faz a segunda parte que é trazer o conteúdo de M10 ( na verdade em minha planilha é F6) e colocar em B1.

Postado

aqui funciona, alterei somente de M10 para F6 e o resultado é este:

A1 = Plan1.........B1 = =Plan1!F6

A2 = Plan2.........B2 = =Plan2!F6

A3 = Plan3.........B3 = =Plan3!F6

Postado
Private Sub Worksheet_Activate()
Dim ws As Worksheet, i As Integer
Application.ScreenUpdating = False
Sheets("ListaPlans").Range("A:B").ClearContents
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "ListaPlans" Then
i = i + 1
With Sheets("ListaPlans")
.Range("A" & i) = ws.Name
.Hyperlinks.Add Anchor:=Range("A" & i), _
Address:="", SubAddress:="'" & ws.Name & _
"'!A1", TextToDisplay:=ws.Name
.Range("B" & i) = "=" & ws.Name & "![COLOR="Red"][B]F6[/B][/COLOR]"
End With
End If
Next ws
Application.ScreenUpdating = True
End Sub

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...