Tworząc tabelę przestawną ręcznie zakres tabeli ustawia się automatycznie, jak to osiągnąć w Basic?
Obecnie zakres jest określany za pomocą
Kod: Zaznacz cały
getCellRangeByName("A1:N200")
Pozdrawiam i dziękuję
Kod: Zaznacz cały
getCellRangeByName("A1:N200")
Kod: Zaznacz cały
Sub test()
GlobalScope.BasicLibraries.LoadLibrary("Tools")
end sub
Kod: Zaznacz cały
Sub DataPilotTable
Dim oSheet
Dim oRange
Dim oRangeAddress
Dim oTables
Dim oTDescriptor
Dim oAllFields
Dim oField
Dim oCellAddress as new com.sun.star.table.CellAddress
Dim ile
'Sprawdzenie czy biblioteka jest załadowana
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
'Wynik negatywny załaduj bibliotekę
GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If
Arkusze = ThisComponent.Sheets
'Czy arkusz istnieje
'W tym przykładzie dane źródłowe są w arkuszu o nazwi "Dane"
If NOT Arkusze.hasByName("Dane") then
Arkusze.insertNewByName("Dane", Arkusze.getCount())
End If
oSheet = ThisComponent.Sheets.getByName("Dane")
'Wykorzystanie funkcji z biblioteki Tools, wykorzystamy zmienną "ile"
'ile = GetLastUsedRow(oSheet)
'oRange = oSheet.getCellRangeByName("A1:N" & Ile + 1)
'Tu to samo bez dodatkowej zmiennej, można jej deklaracje usunąć - "Dim ile"
oRange = oSheet.getCellRangeByName("A1:N" & GetLastUsedRow(oSheet) + 1)
oRangeAddress = oRange.getRangeAddress()
oCellAddress.Sheet = oRangeAddress.Sheet
oCellAddress.Column = oRangeAddress.StartColumn
oCellAddress.Row = oRangeAddress.EndRow + 2
oTables = oSheet.getDataPilotTables()
' Krok1 Utworzenie descriptora
oTDescriptor = oTables.createDataPilotDescriptor()
' Krok2 Dane źródłowe
oTdescriptor.setSourceRange(oRangeAddress)
' Krok3 ustawienie pól
oAllFields = oTDescriptor.getDataPilotFields()
'Zdefiniuj kolumny
oField = oAllFields.getByIndex(0)
oField.Orientation = com.sun.star.sheet.DataPilotFieldOrientation.ROW
oField = oAllFields.getByIndex(1)
oField.Orientation = com.sun.star.sheet.DataPilotFieldOrientation.COLUMN
oField = oAllFields.getByIndex(3)
oField.Orientation = com.sun.star.sheet.DataPilotFieldOrientation.DATA
oField.Function = com.sun.star.sheet.GeneralFunction.SUM
'Wstaw tabelę przestawną
oTables.insertNewByName("DataPilot", oCellAddress, oTDescriptor)
End Sub