Arkusze
Wersja z dnia 15:21, 24 maj 2024 autorstwa HenrykDabrowski (dyskusja | edycje)
22.03.2020
Uchwyt do arkusza przez indeks, nazwa arkusza i zmiana nazwy arkusza
Sub Arkusz1()
Dim sName as String
Dim oSht as Object
'uchwyt do arkusza przez indeks; w tym przypadku uzyskujemy uchwyt do pierwszego arkusza:
oSht = ThisComponent.getSheets().getByIndex(0)
oSht.Name = "Test" 'zmiana nazwy arkusza
sName = oSht.getName() 'uzyskanie nazwy arkusza
MsgBox sName
End Sub
Uchwyt do arkusza przez nazwę, uaktywnienie arkusza
Sub Arkusz2()
Dim sName as String
Dim oSht as Object
oSht = ThisComponent.getSheets().getByName("Test") 'uchwyt do arkusza przez nazwę
ThisComponent.CurrentController.setActiveSheet( oSht ) 'mając uchwyt, możemy uczynić arkuszem aktywnym
End Sub
Uchwyt do aktywnego arkusza, liczba arkuszy w skoroszycie, uaktywnienie ostatniego arkusza
Sub Arkusz3()
Dim n as Long
Dim oSht as Object
oSht = ThisComponent.getCurrentController().getActiveSheet() 'uchwyt do aktywnego arkusza
MsgBox oSht.getName() 'nazwa aktywnego arkusza
n = ThisComponent.getSheets().getCount() 'liczba arkuszy
MsgBox n
oSht = ThisComponent.getSheets().getByIndex(n - 1) 'uchwyt do ostatniego arkusza
ThisComponent.CurrentController.setActiveSheet( oSht ) 'uaktywnienie ostatniego arkusza
End Sub
Sprawdzanie, czy arkusz o podanej nazwie istnieje, wstawianie nowego arkusza, kasowanie arkusza
Sub Arkusz4()
Dim sNew, sOld as String
sNew = "NowyArkusz"
sOld = "StaryArkusz"
If NOT ThisComponent.getSheets().hasByName( sNew ) Then 'sprawdza czy arkusz o podanej nazwie już istnieje
ThisComponent.getSheets().insertNewByName( sNew, 2 ) 'wstawia nowy arkusz na pozycję 3 (z indeksem 2)
End If
If ThisComponent.getSheets().hasByName( sOld ) Then 'sprawdza czy arkusz istnieje
ThisComponent.getSheets().removeByName( sOld ) 'kasuje arkusz o wskazanej nazwie
End If
End Sub
Przeglądając powyższe procedury zauważamy, że wygodnie jest zdefiniować obiekt:
oSheets = ThisComponent.getSheets()
bo skraca to kod procedur i czyni zapis bardziej przejrzystym. Obiekt oSheets jest uchwytem do skoroszytu, czyli do zbioru wszystkich arkuszy w dokumencie.
Wstawianie nowego arkusza, kopiowanie arkusza, kasowanie i przenoszenie arkusza
Sub Arkusz5()
Dim oSheets as Object
oSheets = ThisComponent.getSheets()
oSheets.insertNewByName("Nowy", 1) 'wstawia nowy arkusz na pozycję 2
MsgBox "Nowy arkusz został wstawiony"
oSheets.copyByName("Nowy", "Nowy-kopia", 2) 'tworzymy kopię arkusza "Nowy" i wstawiamy ją na pozycję 3
MsgBox "Kopia arkusza została utworzona"
oSheets.removeByName("Nowy") 'kasujemy arkusz o nazwie "Nowy"
MsgBox "Arkusz został skasowany"
oSheets.moveByName("Nowy-kopia", 0) 'przenosimy arkusz na pozycję pierwszą
End Sub
Polecane strony internetowe
Więcej informacji Czytelnik znajdzie na stronach:
Macros - Basic reference - Calc - Sheets
Spreadsheet common – Working with sheets
The Structure of Spreadsheet Documents
LibreOffice Calc – makra – przykłady Strona główna