Utilizzo delle funzioni di Calc nelle macro

In aggiunta alle funzioni native di BASIC, potete richiamare le funzione di Calc nelle macro e negli script e impostarle nelle formule delle celle.

Richiamare funzioni interne di Calc in Basic

Usare la funzione CreateUNOService per accedere al servizio com.sun.star.sheet.FunctionAccess.

Esempio:

L'esempio seguente crea una funzione denominata MyVlook che richiama la funzione VLOOKUP (CERCA.VERT) di Calc su di una matrice di dati passata come argomento e restituisce il valore trovato dalla funzione.


    Function MyVlook(Lookup, DataArray As Object, Index As Integer, SortedRangeLookup as Byte)
        Dim oService As Object
        Set oService = CreateUnoService("com.sun.star.sheet.FunctionAccess")
        ' Usate sempre i nomi delle funzioni in inglese
        MyVlook = oService.callFunction("VLOOKUP", Array(Lookup, DataArray, Index, SortedRangeLookup))
    End Function
  

La macro seguente presenta un esempio di come è possibile richiamare la funzione MyVlook. Prima viene creata una matrice di dati di 5 per 2, poi viene richiamata la funzione MyVlook e visualizzato il valore restituito usando un MsgBox.


    Sub CallingMyVlook()
        ' Crea una matrice di 5 per 2 e la riempie di dati
        Dim myData(1 to 5, 1 to 2) as Variant
        myData(1, 1) = 1 : myData(1, 2) = "Totalmente in disaccordo"
        myData(2, 1) = 3 : myData(2, 2) = "In disaccordo"
        myData(3, 1) = 5 : myData(3, 2) = "Indeciso"
        myData(4, 1) = 7 : myData(4, 2) = "D'accordo"
        myData(5, 1) = 9 : myData(5, 2) = "Totalmente d'accordo"
        ' Ricerca la matrice di dati
        Dim result as String
        result = MyVlook(4, myData, 2, 1)
        ' Visualizza il messaggio "In disaccordo"
        MsgBox result
    End Sub
  

Impostare le formule delle celle che contengono funzioni interne di Calc

Usate una stringa con il testo della formula per aggiungerla a una cella del foglio di calcolo.

note

Tutte le funzioni di Calc devono essere espresse con il loro nome in inglese.


Esempio:


Sub AssignFormulaToCell
REM Aggiunge una formula alla cella A1. Il nome della funzione deve essere in inglese.
    oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
    oCell.Formula = "=SUM(B1:B10)"
REM La cella A1 visualizza il nome localizzato della funzione
End Sub

Richiamare funzioni aggiuntive (Add-in) di Calc in BASIC

Le funzioni aggiuntive di Calc si trovano nei servizi UNO com.sun.star.sheet.addin.Analysis, com.sun.star.sheet.addin.DateFunctions e com.sun.star.sheet.addin.PricingFunctions.

Esempio:


REM Esempio di chiamata alla funzione aggiuntiva 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

Impostare le formule delle celle usando funzioni aggiuntive

La funzione aggiuntiva deve essere espressa con il nome del suo servizio UNO.

Esempio:


Sub AssignAddInFormulaToCell
REM Inserisce una formula aggiuntiva nella cella A1. Il nome della funzione è quello del servizio UNO.
    oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
    oCell.Formula = "=com.sun.star.sheet.addin.Analysis.getBin2Dec(B1)"
REM La cella A1 visualizza il nome localizzato della funzione
End Sub

Nomi dei servizi UNO per le funzioni aggiuntive di analisi

La tabella seguente presenta un elenco di tutte le funzioni aggiuntive per le analisi di Calc con il nome dei rispettivi servizi UNO.

Nome della funzione di Calc

Nome del servizio UNO

INT.MATURATO.PER

com.sun.star.sheet.addin.Analysis.getAccrint

INT.MATURATO.SCAD

com.sun.star.sheet.addin.Analysis.getAccrintm

AMMORT.DEGR

com.sun.star.sheet.addin.Analysis.getAmordegrc

AMMORT.PER

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

BINARIO.DECIMALE

com.sun.star.sheet.addin.Analysis.getBin2Dec

BINARIO.HEX

com.sun.star.sheet.addin.Analysis.getBin2Hex

BINARIO.OCT

com.sun.star.sheet.addin.Analysis.getBin2Oct

COMPLESSO

com.sun.star.sheet.addin.Analysis.getComplex

CONVERTI

com.sun.star.sheet.addin.Analysis.getConvert

GIORNI.CED.INIZ.LIQ

com.sun.star.sheet.addin.Analysis.getCoupdaybs

GIORNI.CED

com.sun.star.sheet.addin.Analysis.getCoupdays

GIORNI.CED.NUOVA

com.sun.star.sheet.addin.Analysis.getCoupdaysnc

DATA.CED.SUCC

com.sun.star.sheet.addin.Analysis.getCoupncd

NUM.CEDOLA

com.sun.star.sheet.addin.Analysis.getCoupnum

DATA.CED.PREC

com.sun.star.sheet.addin.Analysis.getCouppcd

INT.CUMUL

com.sun.star.sheet.addin.Analysis.getCumipmt

CAP.CUM

com.sun.star.sheet.addin.Analysis.getCumprinc

DECIMALE.BINARIO

com.sun.star.sheet.addin.Analysis.getDec2Bin

DECIMALE.HEX

com.sun.star.sheet.addin.Analysis.getDec2Hex

DECIMALE.OCT

com.sun.star.sheet.addin.Analysis.getDec2Oct

DELTA

com.sun.star.sheet.addin.Analysis.getDelta

TASSO.SCONTO

com.sun.star.sheet.addin.Analysis.getDisc

VALUTA.DEC

com.sun.star.sheet.addin.Analysis.getDollarde

VALUTA.FRAZ

com.sun.star.sheet.addin.Analysis.getDollarfr

DURATA

com.sun.star.sheet.addin.Analysis.getDuration

DATA.MESE

com.sun.star.sheet.addin.Analysis.getEdate

INT.EFFETTIVO

com.sun.star.sheet.addin.Analysis.getEffect

FINE.MESE

com.sun.star.sheet.addin.Analysis.getEomonth

FUNZ.ERRORE

com.sun.star.sheet.addin.Analysis.getErf

FUNZIONE.ERRORE.COMP

com.sun.star.sheet.addin.Analysis.getErfc

FATT.DOPPIO

com.sun.star.sheet.addin.Analysis.getFactdouble

VAL.FUT.CAPITALE

com.sun.star.sheet.addin.Analysis.getFvschedule

MCD

com.sun.star.sheet.addin.Analysis.getGcd

SOGLIA

com.sun.star.sheet.addin.Analysis.getGestep

HEX.BINARIO

com.sun.star.sheet.addin.Analysis.getHex2Bin

HEX.DECIMALE

com.sun.star.sheet.addin.Analysis.getHex2Dec

HEX.OCT

com.sun.star.sheet.addin.Analysis.getHex2Oct

COMP.MODULO

com.sun.star.sheet.addin.Analysis.getImabs

COMP.IMMAGINARIO

com.sun.star.sheet.addin.Analysis.getImaginary

COMP.ARGOMENTO

com.sun.star.sheet.addin.Analysis.getImargument

COMP.CONIUGATO

com.sun.star.sheet.addin.Analysis.getImconjugate

COMP.COS

com.sun.star.sheet.addin.Analysis.getImcos

COMP.COSH

com.sun.star.sheet.addin.Analysis.getImcosh

COMP.COT

com.sun.star.sheet.addin.Analysis.getImcot

COMP.COSEC

com.sun.star.sheet.addin.Analysis.getImcsc

COMP.COSECH

com.sun.star.sheet.addin.Analysis.getImcsch

COMP.DIV

com.sun.star.sheet.addin.Analysis.getImdiv

COMP.EXP

com.sun.star.sheet.addin.Analysis.getImexp

COMP.LN

com.sun.star.sheet.addin.Analysis.getImln

COMP.LOG10

com.sun.star.sheet.addin.Analysis.getImlog10

COMP.LOG2

com.sun.star.sheet.addin.Analysis.getImlog2

COMP.POTENZA

com.sun.star.sheet.addin.Analysis.getImpower

COMP.PRODOTTO

com.sun.star.sheet.addin.Analysis.getImproduct

COMP.PARTE.REALE

com.sun.star.sheet.addin.Analysis.getImreal

COMP.SEC

com.sun.star.sheet.addin.Analysis.getImsec

COMP.SECH

com.sun.star.sheet.addin.Analysis.getImsech

COMP.SEN

com.sun.star.sheet.addin.Analysis.getImsin

COMP.SENH

com.sun.star.sheet.addin.Analysis.getImsinh

COMP.RADQ

com.sun.star.sheet.addin.Analysis.getImsqrt

COMP.DIFF

com.sun.star.sheet.addin.Analysis.getImsub

COMP.SOMMA

com.sun.star.sheet.addin.Analysis.getImsum

COMP.TAN

com.sun.star.sheet.addin.Analysis.getImtan

TASSO.INT

com.sun.star.sheet.addin.Analysis.getIntrate

VAL.PARI

com.sun.star.sheet.addin.Analysis.getIseven

VAL.DISPARI

com.sun.star.sheet.addin.Analysis.getIsodd

MCM

com.sun.star.sheet.addin.Analysis.getLcm

DURATA.M

com.sun.star.sheet.addin.Analysis.getMduration

ARROTONDA.MULTIPLO

com.sun.star.sheet.addin.Analysis.getMround

MULTINOMIALE

com.sun.star.sheet.addin.Analysis.getMultinomial

GIORNI.LAVORATIVI.TOT

com.sun.star.sheet.addin.Analysis.getNetworkdays

NOMINALE

com.sun.star.sheet.addin.Analysis.getNominal

OCT.BINARIO

com.sun.star.sheet.addin.Analysis.getOct2Bin

OCT.DECIMALE

com.sun.star.sheet.addin.Analysis.getOct2Dec

OCT.HEX

com.sun.star.sheet.addin.Analysis.getOct2Hex

PREZZO.PRIMO.IRR

com.sun.star.sheet.addin.Analysis.getOddfprice

REND.PRIMO.IRR

com.sun.star.sheet.addin.Analysis.getOddfyield

PREZZO.ULTIMO.IRR

com.sun.star.sheet.addin.Analysis.getOddlprice

REND.ULTIMO.IRR

com.sun.star.sheet.addin.Analysis.getOddlyield

PREZZO

com.sun.star.sheet.addin.Analysis.getPrice

PREZZO.SCONT

com.sun.star.sheet.addin.Analysis.getPricedisc

PREZZO.SCAD

com.sun.star.sheet.addin.Analysis.getPricemat

QUOZIENTE

com.sun.star.sheet.addin.Analysis.getQuotient

CASUALE.TRA

com.sun.star.sheet.addin.Analysis.getRandbetween

RICEV.SCAD

com.sun.star.sheet.addin.Analysis.getReceived

SOMMA.SERIE

com.sun.star.sheet.addin.Analysis.getSeriessum

RADQ.PI.GRECO

com.sun.star.sheet.addin.Analysis.getSqrtpi

BOT.EQUIV

com.sun.star.sheet.addin.Analysis.getTbilleq

BOT.PREZZO

com.sun.star.sheet.addin.Analysis.getTbillprice

BOT.REND

com.sun.star.sheet.addin.Analysis.getTbillyield

NUM.SETTIMANA

com.sun.star.sheet.addin.Analysis.getWeeknum

GIORNO.LAVORATIVO

com.sun.star.sheet.addin.Analysis.getWorkday

TIR.X

com.sun.star.sheet.addin.Analysis.getXirr

VAN.X

com.sun.star.sheet.addin.Analysis.getXnpv

FRAZIONE.ANNO

com.sun.star.sheet.addin.Analysis.getYearfrac

REND

com.sun.star.sheet.addin.Analysis.getYield

REND.TITOLI.SCONT

com.sun.star.sheet.addin.Analysis.getYielddisc

REND.SCAD

com.sun.star.sheet.addin.Analysis.getYieldmat


Nomi dei servizi UNO per le funzioni aggiuntive della data

La tabella seguente presenta un elenco di tutte le funzioni aggiuntive di Calc relative alla data, con il nome dei rispettivi servizi UNO.

Nome della funzione di Calc

Nome del servizio UNO

GIORNI.MESE

com.sun.star.sheet.addin.DateFunctions.getDaysInMonth

GIORNI.ANNO

com.sun.star.sheet.addin.DateFunctions.getDaysInMonth

MESI

com.sun.star.sheet.addin.DateFunctions.getDiffMonths

SETTIMANE

com.sun.star.sheet.addin.DateFunctions.getDiffWeeks

ANNI

com.sun.star.sheet.addin.DateFunctions.getDiffYears

ROT13

com.sun.star.sheet.addin.DateFunctions.getRot13

SETTIMANE.ANNO

com.sun.star.sheet.addin.DateFunctions.getWeeksInYear


Nomi dei servizi UNO per le funzioni aggiuntive relative ai prezzi

La tabella seguente presenta un elenco di tutte le funzioni aggiuntive di Calc relative ai prezzi, con il nome dei rispettivi servizi UNO.

Nome della funzione di Calc

Nome del servizio UNO

OPZIONE.BARRIERA

com.sun.star.sheet.addin.PrincingFunctions.getOptBarrier

OPZIONE.PROB.HIT

com.sun.star.sheet.addin.PrincingFunctions.getOptProbHit

OPZIONE.PROB.INMONEY

com.sun.star.sheet.addin.PrincingFunctions.getOptProbInMoney

OPZIONE.TOUCH

com.sun.star.sheet.addin.PrincingFunctions.getOptTouch


Sostienici!