Spis treści

# Korzystanie z funkcji Calc w makrach

Oprócz natywnych funkcji języka BASIC można wywoływać funkcje programu Calc w makrach i skryptach oraz ustawiać funkcje programu Calc w formułach komórek.

## Wywoływanie wewnętrznych funkcji Calc w Basic

Użyj funkcji CreateUnoService, aby uzyskać dostęp do usługi com.sun.star.sheet.FunctionAccess.

### Przykład:

Poniższy przykład tworzy funkcję o nazwie MyVlook, która wywołuje funkcję WYSZUKAJ.PIONOWO Calc na tablicy danych przekazanej jako argument i zwraca wartość znalezioną przez funkcję.

        Function MyVlook(Lookup, DataArray As Object, Index As Integer, SortedRangeLookup as Byte)
            Dim oService As Object
            Set oService = CreateUnoService("com.sun.star.sheet.FunctionAccess")
            ' Zawsze używaj nazwy funkcji w języku angielskim
            MyVlook = oService.callFunction("VLOOKUP", Array(Lookup, DataArray, Index, SortedRangeLookup))
        End Function

Poniższe makro przedstawia przykład wywołania funkcji MyVlook. Najpierw tworzy tablicę danych 5 na 2, a następnie wywołuje funkcję MyVlook i wyświetla zwróconą wartość za pomocą MsgBox.

        Sub CallingMyVlook()
            ' Tworzy tablicę 5 na 2 i wypełnia ją danymi
            Dim myData(1 to 5, 1 to 2) as Variant
            myData(1, 1) = 1 : myData(1, 2) = "Zdecydowanie się nie zgadzam"
            myData(2, 1) = 3 : myData(2, 2) = "Nie zgadzam się"
            myData(3, 1) = 5 : myData(3, 2) = "Jeszcze nie wiem"
            myData(4, 1) = 7 : myData(4, 2) = "Zgadzam się"
            myData(5, 1) = 9 : myData(5, 2) = "Zdecydowanie zgadzam się"
            ' Wyszukuje tablicę danych
            Dim result as String
            result = MyVlook(4, myData, 2, 1)
            ' Wyświetla komunikat „Nie zgadzam się”
            MsgBox result
        End Sub

## Ustawianie formuł komórek zawierających wewnętrzne funkcje Calc

Użyj ciągu tekstowego formuły, aby dodać formułę do komórki arkusza kalkulacyjnego.

Wszystkie funkcje Calc muszą być napisane przy użyciu angielskich nazw.

### Przykład:

    Sub AssignFormulaToCell
    REM Dodaj formułę do komórki A1. Nazwa funkcji musi być w języku angielskim.
        oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
        oCell.Formula = "=SUM(B1:B10)"
    REM Komórka A1 wyświetla zlokalizowaną nazwę funkcji
    End Sub

## Wywoływanie funkcji dodatków Calc w BASIC

Funkcje dodatków Calc znajdują się w usługach UNO: com.sun.star.sheet.addin.Analysis, com.sun.star.sheet.addin.DateFunctions i com.sun.star.sheet.addin.PricingFunctions.

### Przykład:

    REM Przykład wywołania funkcji dodatku SQRTPI
    Function MySQRTPI(arg as double) as double
       Dim oService as Object
       oService = CreateUnoService("com.sun.star.sheet.addin.Analysis")
       MySQRTPI = oService.getSqrtPi(arg)
    End Function

## Ustawianie formuł komórek za pomocą funkcji dodatków

Funkcja dodatku musi być wyrażona przez nazwę usługi UNO.

### Przykład:

    Sub AssignAddInFormulaToCell
    REM Dodaj formułę dodatku do komórki A1. Nazwa funkcji to nazwa usługi UNO.
        oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
        oCell.Formula = "=com.sun.star.sheet.addin.Analysis.getBin2Dec(B1)"
    REM Komórka A1 wyświetla zlokalizowaną nazwę funkcji
    End Sub

## Nazwa usługi UNO dla funkcji dodatku analizy

Poniższa tabela przedstawia listę wszystkich funkcji dodatku analizy Calc i odpowiadających im nazw usług UNO.

Nazwa funkcji Calc | Nazwa usługi UNO
--- | ---
NAL.ODS | com.sun.star.sheet.addin.Analysis.getAccrint
NAL.ODS.WYKUP | com.sun.star.sheet.addin.Analysis.getAccrintm
AMORT.NIELIN | com.sun.star.sheet.addin.Analysis.getAmordegrc
AMORT.LIN | com.sun.star.sheet.addin.Analysis.getAmorlinc
BESSEL.I | com.sun.star.sheet.addin.Analysis.getBesseli
BESSEL.J | com.sun.star.sheet.addin.Analysis.getBesselj
BESSEL.K | com.sun.star.sheet.addin.Analysis.getBesselk
BESSEL.Y | com.sun.star.sheet.addin.Analysis.getBessely
DWÓJK.NA.DZIES | com.sun.star.sheet.addin.Analysis.getBin2Dec
DWÓJK.NA.SZESN | com.sun.star.sheet.addin.Analysis.getBin2Hex
DWÓJK.NA.ÓSM | com.sun.star.sheet.addin.Analysis.getBin2Oct
LICZBA.ZESP | com.sun.star.sheet.addin.Analysis.getComplex
KONWERTUJ | com.sun.star.sheet.addin.Analysis.getConvert
WYPŁ.DNI.OD.POCZ | com.sun.star.sheet.addin.Analysis.getCoupdaybs
WYPŁ.DNI | com.sun.star.sheet.addin.Analysis.getCoupdays
WYPŁ.DNI.NAST | com.sun.star.sheet.addin.Analysis.getCoupdaysnc
WYPŁ.DATA.NAST | com.sun.star.sheet.addin.Analysis.getCoupncd
WYPŁ.LICZBA | com.sun.star.sheet.addin.Analysis.getCoupnum
WYPŁ.DATA.POPRZ | com.sun.star.sheet.addin.Analysis.getCouppcd
SPŁAC.ODS | com.sun.star.sheet.addin.Analysis.getCumipmt
SPŁAC.KAPIT | com.sun.star.sheet.addin.Analysis.getCumprinc
DZIES.NA.DWÓJK | com.sun.star.sheet.addin.Analysis.getDec2Bin
DZIES.NA.SZESN | com.sun.star.sheet.addin.Analysis.getDec2Hex
DZIES.NA.ÓSM | com.sun.star.sheet.addin.Analysis.getDec2Oct
CZY.RÓWNE | com.sun.star.sheet.addin.Analysis.getDelta
STOPA.DYSK | com.sun.star.sheet.addin.Analysis.getDisc
CENA.DZIES | com.sun.star.sheet.addin.Analysis.getDollarde
CENA.UŁAM | com.sun.star.sheet.addin.Analysis.getDollarfr
ROCZ.PRZYCH | com.sun.star.sheet.addin.Analysis.getDuration
NR.SER.DATY | com.sun.star.sheet.addin.Analysis.getEdate
EFEKTYWNA | com.sun.star.sheet.addin.Analysis.getEffect
NR.SER.OST.DN.MIES | com.sun.star.sheet.addin.Analysis.getEomonth
FUNKCJA.BŁ | com.sun.star.sheet.addin.Analysis.getErf
KOMP.FUNKCJA.BŁ | com.sun.star.sheet.addin.Analysis.getErfc
SILNIA.DWUKR | com.sun.star.sheet.addin.Analysis.getFactdouble
WART.PRZYSZŁ.KAP | com.sun.star.sheet.addin.Analysis.getFvschedule
NAJW.WSP.DZIEL | com.sun.star.sheet.addin.Analysis.getGcd
SPRAWDŹ.PRÓG | com.sun.star.sheet.addin.Analysis.getGestep
SZESN.NA.DWÓJK | com.sun.star.sheet.addin.Analysis.getHex2Bin
SZESN.NA.DZIES | com.sun.star.sheet.addin.Analysis.getHex2Dec
SZESN.NA.ÓSM | com.sun.star.sheet.addin.Analysis.getHex2Oct
MODUŁ.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImabs
CZ.UROJ.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImaginary
ARG.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImargument
SPRZĘŻ.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImconjugate
COS.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImcos
COSH.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImcosh
COTAN.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImcot
CSC.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImcsc
CSCH.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImcsch
ILORAZ.LICZB.ZESP | com.sun.star.sheet.addin.Analysis.getImdiv
EXP.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImexp
LN.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImln
LOG10.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImlog10
LOG2.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImlog2
POTĘGA.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImpower
ILOCZYN.LICZB.ZESP | com.sun.star.sheet.addin.Analysis.getImproduct
CZ.RZECZ.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImreal
SEC.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImsec
SECH.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImsech
SIN.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImsin
SINH.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImsinh
PIERWIASTEK.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImsqrt
RÓŻN.LICZB.ZESP | com.sun.star.sheet.addin.Analysis.getImsub
SUMA.LICZB.ZESP | com.sun.star.sheet.addin.Analysis.getImsum
TAN.LICZBY.ZESP | com.sun.star.sheet.addin.Analysis.getImtan
STOPA.PROC | com.sun.star.sheet.addin.Analysis.getIntrate
CZY.PARZYSTE | com.sun.star.sheet.addin.Analysis.getIseven
CZY.NIEPARZYSTE | com.sun.star.sheet.addin.Analysis.getIsodd
NAJMN.WSP.WIEL | com.sun.star.sheet.addin.Analysis.getLcm
ROCZ.PRZYCH.M | com.sun.star.sheet.addin.Analysis.getMduration
ZAOKR.DO.WIELOKR | com.sun.star.sheet.addin.Analysis.getMround
WIELOMIAN | com.sun.star.sheet.addin.Analysis.getMultinomial
DNI.ROBOCZE | com.sun.star.sheet.addin.Analysis.getNetworkdays
NOMINALNA | com.sun.star.sheet.addin.Analysis.getNominal
ÓSM.NA.DWÓJK | com.sun.star.sheet.addin.Analysis.getOct2Bin
ÓSM.NA.DZIES | com.sun.star.sheet.addin.Analysis.getOct2Dec
ÓSM.NA.SZESN | com.sun.star.sheet.addin.Analysis.getOct2Hex
CENA.PIERW.OKR | com.sun.star.sheet.addin.Analysis.getOddfprice
RENT.PIERW.OKR | com.sun.star.sheet.addin.Analysis.getOddfyield
CENA.OST.OKR | com.sun.star.sheet.addin.Analysis.getOddlprice
RENT.OST.OKR | com.sun.star.sheet.addin.Analysis.getOddlyield
CENA | com.sun.star.sheet.addin.Analysis.getPrice
CENA.DYSK | com.sun.star.sheet.addin.Analysis.getPricedisc
CENA.WYKUP | com.sun.star.sheet.addin.Analysis.getPricemat
CZ.CAŁK.DZIELENIA | com.sun.star.sheet.addin.Analysis.getQuotient
LOS.ZAKR | com.sun.star.sheet.addin.Analysis.getRandbetween
KWOTA.WYKUP | com.sun.star.sheet.addin.Analysis.getReceived
SUMA.SZER.POT | com.sun.star.sheet.addin.Analysis.getSeriessum
PIERW.PI | com.sun.star.sheet.addin.Analysis.getSqrtpi
RENT.EKW.BS | com.sun.star.sheet.addin.Analysis.getTbilleq
CENA.BS | com.sun.star.sheet.addin.Analysis.getTbillprice
RENT.BS | com.sun.star.sheet.addin.Analysis.getTbillyield
NUM.TYG | com.sun.star.sheet.addin.Analysis.getWeeknum
DZIEŃ.ROBOCZY | com.sun.star.sheet.addin.Analysis.getWorkday
XIRR | com.sun.star.sheet.addin.Analysis.getXirr
XNPV | com.sun.star.sheet.addin.Analysis.getXnpv
CZĘŚĆ.ROKU | com.sun.star.sheet.addin.Analysis.getYearfrac
RENTOWNOŚĆ | com.sun.star.sheet.addin.Analysis.getYield
RENT.DYSK | com.sun.star.sheet.addin.Analysis.getYielddisc
RENT.WYKUP | com.sun.star.sheet.addin.Analysis.getYieldmat

## Nazwy usług UNO dla funkcji dodatku daty

Poniższa tabela przedstawia listę wszystkich funkcji dodatku daty Calc i odpowiadających im nazw usług UNO.

Nazwa funkcji Calc | Nazwa usługi UNO
--- | ---
DNI.MIESIĄCA | com.sun.star.sheet.addin.DateFunctions.getDaysInMonth
DNI.ROKU | com.sun.star.sheet.addin.DateFunctions.getDaysInMonth
MIESIĄCE | com.sun.star.sheet.addin.DateFunctions.getDiffMonths
TYGODNIE | com.sun.star.sheet.addin.DateFunctions.getDiffWeeks
LATA | com.sun.star.sheet.addin.DateFunctions.getDiffYears
ROT13 | com.sun.star.sheet.addin.DateFunctions.getRot13
TYGODNIE.ROKU | com.sun.star.sheet.addin.DateFunctions.getWeeksInYear

## Nazwy usług UNO dla funkcji dodatku wyceny

Poniższa tabela przedstawia listę wszystkich funkcji dodatku wyceny Calc i odpowiadających im nazw usług UNO.

Nazwa funkcji Calc | Nazwa usługi UNO
--- | ---
OPC_BARIERA | com.sun.star.sheet.addin.PrincingFunctions.getOptBarrier
OPC_PRAW_OSIĄG | com.sun.star.sheet.addin.PrincingFunctions.getOptProbHit
OPC_PRAW_W.PIENIĄDZ | com.sun.star.sheet.addin.PrincingFunctions.getOptProbInMoney
OPC_TOUCH | com.sun.star.sheet.addin.PrincingFunctions.getOptTouch

Tematy pokrewne

Funkcja CreateUnoService