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.

note

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


Prosimy o wsparcie!