Pergunte aqui
1

Macro para classificar planilhas em ordem alfabética.

perguntadas 2018-03-06 13:22:33 +0200

imagem do gravatar de Daniellopes2006

updated 2019-03-01 19:10:22 +0200

Quero construir uma macro para classificar as PLANILHAS em ordem alfabética, mas não sei qual ou quais funções usar. Alguém do grupo poderia me ajudar?

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

3 Respostas

3

respondidas 2018-03-07 00:38:26 +0200

imagem do gravatar de Grafeno

updated 2018-03-07 23:52:37 +0200

Boa noite,

Agora correto, uma macro que classifica as planilhas (abas) em ordem alfabética:

Sub ClassificarAbas
Dim oDoc as Object, oPlanilhas as Object
Dim mAbas as Variant, mOrdem as Variant

   'Obter os nomes'
   oDoc = ThisComponent
   oPlanilhas = oDoc.Sheets
   mAbas = oPlanilhas.ElementNames

   ' Carregar o biblioteca Tools'
   If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
     GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
   End If

   ' Função da biblioteca Tools que classifica listas'
   mOrdem = BubbleSortList( mAbas )

   ' Colocar as abas na ordem'
   For i = 0 to UBound( mOrdem )
      oPlanilhas.MoveByName( mOrdem(i), i )
   Next i
End Sub

Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

1

Postei uma macro somente para constar, porque a de @Conrado resolve a questão.

imagem do gravatar de GrafenoGrafeno ( 2018-03-08 00:01:33 +0200 )editar
1

Ok @Grafeno também funciona e ficou melhor, é LibreOffice Basic.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2018-03-08 02:03:26 +0200 )editar
1

Concordo com o @Gilberto Schiavinatto. Ainda estou estudando a programação do LibreOffice. Começei a utilizá-lo em menos de 01 ano, e a linguagem é bem diferente do que estou acostumado.

imagem do gravatar de ConradoConrado ( 2018-03-08 11:36:27 +0200 )editar

Olá, usei esse código do Grafeno, ficou legal. Obrigado gente.

imagem do gravatar de Daniellopes2006Daniellopes2006 ( 2018-03-09 03:45:34 +0200 )editar
2

respondidas 2018-03-07 14:59:50 +0200

imagem do gravatar de Conrado

updated 2018-03-07 15:11:10 +0200

Bom dia,

Vou te passar um código que utilizo para excel, veja se funciona. Obs.: Tentei converter ele para openoffice e não consegui.

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1

Sub OrdenarPlanilhasPelosNomes()

'Código para ordenação das planilhas de uma pasta de trabalho com base nos seus nomes

Dim k           As Integer
Dim i           As Integer
Dim Tipo        As Integer
Dim Mensagem    As String

'Exibir caixa de mensagem para que o usuário possa selecionar o tipo de ordenação desejada

Mensagem = "Pressione Sim para ordenação crescente" & vbLf & _
"e Não para ordenação decrescente"
Tipo = MsgBox(Mensagem, vbYesNo + vbApplicationModal, _
"Ordenar planilhas")

Select Case Tipo
Case vbYes
    'Opção de ordenação crescente
    For k = 1 To ThisWorkbook.Sheets.Count
        For i = 1 To ThisWorkbook.Sheets.Count - 1
            If Sheets(i).Name > Sheets(i + 1).Name Then
            Sheets(i + 1).Move Before:=Sheets(i)
            End If
        Next i
    Next k
Case vbNo
'Opção de ordenação decrescente
    For k = 1 To ThisWorkbook.Sheets.Count
        For i = 1 To ThisWorkbook.Sheets.Count - 1
            If Sheets(i).Name < Sheets(i + 1).Name Then
            Sheets(i + 1).Move Before:=Sheets(i)
            End If
        Next i
    Next k
End Select

End Sub

Fiz os testes no libreoffice que eu utilizo e deu certo

editar assinalar como ofensivo Excluir Link mais

Comentários

Ok Funciona

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2018-03-07 17:50:17 +0200 )editar

Que bom que deu certo @Gilberto Schiavinatto

imagem do gravatar de ConradoConrado ( 2018-03-07 18:44:38 +0200 )editar
0

respondidas 2018-03-07 03:32:48 +0200

imagem do gravatar de Daniellopes2006

Olá Grafeno, primeiro obrigado pela disposição, essa classificação que você está me propondo é dentro da planilha. Estou querendo classificar as planilhas mesmo. Por exemplo você cria as planilhas de nomes: "arquivo", "vidro", "armários" e "ruas". Quero que ao rodar a macro elas fiquem ordenadas em ordem alfabética, como: "armários", "arquivo", "ruas" e "vidro".

Então não interessa o que tem no conteúdo das planilhas e sim seus nomes. Estou com uma ideia, mas acho que é muito primária, gostaria de ter mais ideia para ver se consigo fazer uma coisa boa e rápida. Obrigado pela ajuda, conto com você abraço.

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2018-03-06 13:22:33 +0200

Lidas: 669 vezes

Última atualização: Mar 07 '18