Makro: Vzestupné seřazení listů podle abecedy

Kategorie:

Dnes opět zabrouzdáme do luhů a hájů maker a ukážeme si, jak naprogramovat makro tak, aby nám po jeho spuštění OpenOffice.org seřadil jednotlivé listy podle abecedy.
Pro demonstraci tohoto makra využiji dokument, který registrovaní uživatelé naleznou v přílohách pod článkem. V tomto souboru je vytvořeno 13 listů s různými tří písmennými zkratkami, které jsou různě proházeny. V tomto souboru je i zmiňované makro, abyste se s ním nemuseli psát.

Na druhém snímku je vidět zápis makra. Pro ty, kteří se nechtějí kvůli makru registrovat,. je zde zápis:

Sub SeraditListy
Dim Listy
Dim i As Integer
Dim Opakovat As Boolean

Listy = ThisComponent.Sheets

If Listy.getCount() > 1 Then 'Listy nejsou serazeny
Do
Opakovat = False 'Budeme opakovat akci az do doby, kdy jiz dalsi opakovani serazovani nelze aplikovat
For i = 0 to Listy.getCount()-2
If Listy.getByIndex(i).Name > Listy.getByIndex(i+1).Name Then
Listy.moveByName(Listy.getByIndex(i+1).Name,i)
Opakovat = True
End If
Next
Loop Until Opakovat = False
End If

End Sub

Pokud nevíte, jak makro spustit, tak si najeďte na Nástroje/Makra/Spustit Makro.

Otevře se vám nové okno Výběr makra, kde pod položkou makro.ods je knihovna Standard a modul s názvem Modul1, v něm se nachází makro SeraditListy. Nyní stačí kliknout na tlačítko Spustit a makro se spustí a rovnou začne řadit názvy listů podle abecedy.

Jediný problém, který jsem zatím nedokázal odstranit je to, že pokud se jmenují listy List1, List2..., tak se List10 a další začnou řadit hned za List1, což je samozřejmě špatně.
Proto pokud by mě někdo poradil, jak na to, rád to do makra zakomponuji a aktualizuji článek.

»