Notifications
Clear all

Criar busca de planilhas ocultas

15 Posts
3 Usuários
0 Reactions
2,343 Visualizações
(@tecnico)
Posts: 36
Eminent Member
Topic starter
 

Boa tarde a todos.

Tenho uma pasta do Excel, com umas 100 planilhas ocultas. Todas estão renomeadas por números, tipo: 0001, 0002, 0100, 0201, etc...
Queria criar uma planilha que ao fazer a pesquisa da planilha pelo numero ela me trouxesse esta planilha ou pelo menos reexibisse.
Alguém tem ideia de como realizar isso?

 
Postado : 26/05/2015 2:38 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Em nossa base há algo similar!
http://www.google.com.br/cse?cx=partner ... gsc.page=1

Att

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

 
Postado : 26/05/2015 2:40 pm
(@tecnico)
Posts: 36
Eminent Member
Topic starter
 

Alexandre, infelizmente não achei nada. Até já havia olhado, mais não encontrei nada que satisfaze-se minha necessidade.

 
Postado : 27/05/2015 3:05 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pesquise por "navegar abas ocultas" e encontrara várias opções, uma delas é a do tópico abaixo, é só fazer os ajutes :

como criar um hiperlink no excel para uma planilha oculta [Resolvido]
viewtopic.php?f=10&t=15681

Agora, como não deu muitos detalhes e supondo que utilze uma aba chamada MENU e a celula "A2" com validação com os nomes das abas :

Sub ExibeSheet()
   
    Dim sNomeSheet As String

    sNomeSheet = Range("A2").Value

    Sheets(sNomeSheet).Visible = True
   
End Sub

E na aba que for reexibida, ter um botão para voltar a aba menu, associar a rotina abaixo :

Sub VoltarMenu()
    Dim ws As Excel.Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "MENU" Then
            ws.Visible = False
        End If
    Next
End Sub

[]s

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

 
Postado : 27/05/2015 4:23 pm
(@tecnico)
Posts: 36
Eminent Member
Topic starter
 

Como devo colocar isso em cada botão, pois não estou conseguindo linkar isso. Sou leigo no assunto, peço desculpa pelas perguntas sem nexo para você!

 
Postado : 28/05/2015 8:24 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Para tal veja:
https://support.office.com/pt-br/articl ... t-BR&ad=BR

Att

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

 
Postado : 28/05/2015 10:31 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como devo colocar isso em cada botão, pois não estou conseguindo linkar isso. Sou leigo no assunto, peço desculpa pelas perguntas sem nexo para você!

tecnico, eu demonstrei somente uma forma básica de se efetuar o acesso a abas ocultas, reexibindo-a e depois ocultando, pois não compreendi quando disse :
"Queria criar uma planilha que ao fazer a pesquisa da planilha pelo numero ela me trouxesse esta planilha ou pelo menos reexibisse", a palavra pesquisa me deixou em duvida qual é o procedimento que quer fazer, se é utilizar alguma rotina para Pesquisar se determinada aba existe e se sim reexibi-la ou pesquisar por algum termo nas abas ocultas e se encontrar reexibi-la, ou se é somente um Menu com os nomes das abas e apos selecionar reexibir a mesma.

Antes de continuar, chegou a ver o tópico que indiquei com os Hiperlinks ? Baixou o exemplo ? seria isto o que pretende ? Se sim, seria o caso de só ajustar as rotinas.
Se passar mais detalhes podemos ajudar.

Quanto aos Botões, é só adicionar em cada aba, selecionar o mesmo com o Botão direito do mouse e selecionar atribuir macro e selecionar a macro que pretende executar, terá de fazer isto em cada botão que inserir.

[]s

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

 
Postado : 28/05/2015 11:23 am
(@edcronos)
Posts: 1006
Noble Member
 

tbm não entendi muito bem oq vc quer fazer
mas tem um topico que o cara queria navegar entre muitas abas
talves de para adapta
eu tinha feito por userform
é só adicionar uma rotina para reexibir a aba que se quer

viewtopic.php?f=10&t=12851

fiz uma modificação para desocultar a aba pesquisada e ocultar a atual

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 28/05/2015 11:50 am
(@tecnico)
Posts: 36
Eminent Member
Topic starter
 

Mauro, bom dia,

Era justamente isso que eu queria, apenas não consegui entender como atribuir isso a minha planilha.
Tipo, se eu salvar este código em minha planilha e depois criar o hiperlink, ele já funcionará?

 
Postado : 29/05/2015 4:42 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Mauro, bom dia,

Era justamente isso que eu queria, apenas não consegui entender como atribuir isso a minha planilha.
Tipo, se eu salvar este código em minha planilha e depois criar o hiperlink, ele já funcionará?

Tecnico, sexta é bem corrida, vou passar de quq forma você poderá implementar sem ter que praticamente manusear com as abas ocultas, faça uma cópia antes de seu arquivo para poder retornar se tiver algum erro.

Pelo que entendi você tem uma Aba visível e as demais ocultas :
1º ) - renomeie esta aba para "MENU"
2º ) Clique com o botão direito na guia e selecione Exibir Código
3º ) Na janela que aparecer cole as rotinas abaixo

Private Sub Worksheet_Activate()
   
   Dim ws As Excel.Worksheet
   
   For Each ws In ThisWorkbook.Worksheets
      ws.Visible = (ws.Name = Me.Name)
   Next
   
End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  
   Dim strSheet As String
   
   If InStr(Target.Parent, "!") > 0 Then
      strSheet = Left(Target.Parent, InStr(1, Target.Parent, "!") - 1)
   Else
      strSheet = Target.Parent
   End If
   
   Sheets(strSheet).Visible = True
   Sheets(strSheet).Select
   
End Sub

4º ) Adicione um novo Módulo na janela do VBA, e cole esta outra rotina :

Sub Adiciona_Links_Abas_Ocultas()
    
    'Seleciona B2
    Range("B2").Select
    
    'Limpa todas as clelulas abaixo de B2
    Range(ActiveCell, [B65000].End(xlUp)).ClearContents
    
    'Nome da Aba 1 - Podemos colocar direto tambem
    nSht_Menu = Sheets(1).Name
    'nSht_Menu = Sheets("MENU").Name
    
    'Loop em todas as abas a prtir da segunda
    For i = 2 To Sheets.Count
      'Nome das abas Ocultas
      nSh_tHide = Sheets(i).Name
      
      'Adiciona na Aba MENU os Hyperlinks para as abas ocultas
      ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="" & _
         nSh_tHide & "" & "!A" & Sheets(i).[A1].Row, TextToDisplay:=nSh_tHide
      
      'Adiciona em A1 o Link para voltar para a aba MENU
      Worksheets(nSh_tHide).Hyperlinks.Add Anchor:=Worksheets(nSh_tHide).Range("A1"), Address:="", SubAddress:="" & _
         nSht_Menu & "" & "!B" & Sheets(1).[B65000].End(xlUp).Row, TextToDisplay:=nSht_Menu
         
     ActiveCell.Offset(1, 0).Select
     
    Next i
    
End Sub

5º ) salve o arquivo e rode esta rotina, o que ela faz :
Irá criar uma Relação a partir da Celula B2 na aba Menu de todas as abas Ocultas e adicionar o Linka para as mesmas e tambem adicionar em cada aba oculta em A1 o Link para Voltar ao Menu.

Faça os testes e veja se é isto.

[]s

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

 
Postado : 29/05/2015 1:55 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tecnico, estava pensando que como você disse que tem umas 100 abas ocultas, criar uma lista com hyperlinks nas celulas ficaria um pouco extensa, seriam usadas 100 celulas e teria de percorre-la para selecionar a aba pretendida, então resolvi modificar e criar uma Validação em uma celula com a relação das abas, então segue uma outra forma, veja se fica melhor, mas copie somente a que resolver utilizar :

Lista Com Validação de abas ocultas :
Na Aba Inicial, supondo que esteja com o nome MENU cole as rotinas abaixo:

Private Sub Worksheet_Activate()
   Dim ws As Excel.Worksheet
   
   'Oculta todas as abas, menos a Inicial (MENU)
   For Each ws In ThisWorkbook.Worksheets
      ws.Visible = (ws.Name = Me.Name)
   Next
   
End Sub

'Seleciona a aba que estiver selecionada na Validação
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim sSht_Hide  As String

    If Application.Intersect(Target, Range("A1")) Is Nothing Then
        Exit Sub
    End If
    
    If Target.Cells.Count > 1 Then
        Exit Sub
    End If
    
    If Target.Value = "" Then
        Exit Sub
    End If

    With Target
        sSht_Hide = .Value
        
        With Sheets(sSht_Hide)
            .Visible = True
            .Select
            .Range("A1").Activate
        End With
      
    End With

End Sub

Crie um noivo Módulo e cole as rotinas abaixo :

'Adiciona um Hyperlink nas abas ocultas par retornar a aba inicial (MENU)
Sub Adiciona_Voltar_Abas_Ocultas()
    
    'Nome da Aba 1 - Podemos colocar direto tambem
    nSht_Menu = Sheets(1).Name
    'nSht_Menu = Sheets("MENU").Name
    
    'Loop em todas as abas a prtir da segunda
    For i = 2 To Sheets.Count
      'Nome das abas Ocultas
      nSh_tHide = Sheets(i).Name
      
      'Adiciona em A1 o Link para voltar para a aba MENU
      Worksheets(nSh_tHide).Hyperlinks.Add Anchor:=Worksheets(nSh_tHide).Range("A1"), Address:="", SubAddress:="" & _
         nSht_Menu & "" & "!A" & Sheets(1).[A65000].End(xlUp).Row, TextToDisplay:=nSht_Menu
     
    Next i
    
End Sub

'Cria uma lista de validação das abas ocultas no range A1
Sub Cria_Lista_Validacao()
    Dim ws As Worksheet
    Dim rng As Range
    Set ws = ThisWorkbook.Worksheets("MENU")
    Set rng = ws.Range("A1")
    
    For i = 2 To Sheets.Count
        nSh_tHide = Sheets(i).Name
        nSh_tHide1 = nSh_tHide1 & nSh_tHide & ","
    Next
    
    'Adiciona Validação na Celua A1 com a Relação das abas ocultas
    With rng.Validation
        .Delete 'delete previous validation
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Formula1:=nSh_tHide1
    End With
    Range("A1").Activate
End Sub

Faça os teste e qq coisa retorne.

[]s

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

 
Postado : 29/05/2015 10:41 pm
(@tecnico)
Posts: 36
Eminent Member
Topic starter
 

Olá Mauro,

Fiz os 2 testes, todos 2 me atenderam.
Mais quando clico para abrir acontece uma coisa. Exibe um erro no Microsoft Visual Basic, dizendo:

Erro em tempo de execução '9':
Subscrito fora do intervalo

Estava pensando e se eu apenas digitasse o numero o nome da planilha e ela aparecesse, e quando eu clicar em um outro botão ela fechar?
Tem como?

 
Postado : 10/06/2015 3:21 pm
(@tecnico)
Posts: 36
Eminent Member
Topic starter
 

Estava analisando, minha planilhas tem o nome em numeros tipo: 0250, 0001, 0053, etc...
Quando ele linka ele da o nome sem o "0", tipo: 250, 1, 53, etc...

Será que não seria isso?

 
Postado : 10/06/2015 3:23 pm
(@tecnico)
Posts: 36
Eminent Member
Topic starter
 

Outra coisa, preciso que oculte todas as abas , exceto a MENU, PAINEL e Ordem de Serviço.

Como posso modificar para ela deixar estas visiveis? Porque ela deixa apenas a aba MENU.

Obrigado

 
Postado : 10/06/2015 3:26 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

tecnico, na rotina que cria a validação Sub Cria_Lista_Validacao() troque a última instrução :

Range("A1").Activate
Por :

    With Range("A1")
        .NumberFormat = "@"
        .Activate
    End With

Assim a celula é formatada como texto e a rotina para acessar as abas ocultas reconhecerá as abas com numeros.

Quanto a segunda duvida troque a rotina por esta :

Private Sub Worksheet_Activate()
   
   Dim ws As Excel.Worksheet
   
    For Each ws In ThisWorkbook.Worksheets
   
        If ws.Name <> "MENU" And ws.Name <> "PAINEL" And ws.Name <> "Ordem de Serviço" Then
            ws.Visible = False
        End If
   
    Next
   
End Sub

[]s

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

 
Postado : 10/06/2015 8:44 pm