Axuda do LibreOffice 25.2
As macros no Calc do LibreOffice deben ler e escribir valores decotío en follas de cálculo. Esta páxina da axuda describe os diversos enfoques para acceder a follas e intervalos e ler ou escribir os seus valores.
Todos os exemplos presentados nesta páxina poden ser implementados tanto en BASIC como en Python.
O seguinte exemplo introduce o valor numérico 123 na cela «A1» da folla activa.
    Dim oSheet as Object
    Dim oCell as Object
    oSheet = ThisComponent.CurrentController.getActiveSheet()
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(123)
  Pódese lograr o mesmo con Python:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getCurrentController().getActiveSheet()
    cell = sheet.getCellRangeByName("A1")
    cell.setValue(123)
  Observe que, nos exemplos anteriores, a cela é accesíbel utilizando o nome de intervalo «A1». Tamén é posíbel acceder ás celas con axuda de índices, como se a folla fose unha matriz na que as columnas e filas están indexadas a partir de cero.
Isto pódese facer empregando o método getCellByPosition(colIndex, rowIndex), que toma un índice de columna e de fila. O exemplo de abaixo en Basic cambia o valor do texto da cela «C1» (columna 2, fila 0).
    oSheet = ThisComponent.CurrentController.getActiveSheet()
    oCell = oSheet.getCellByPosition(2, 0)
    oCell.setString("Hello")
  Este exemplo tamén se pode implementar en Python deste xeito:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getCurrentController().getActiveSheet()
    cell = sheet.getCellByPosition(2, 0)
    cell.setString("Hello")
  A diferenza principal entre os scripts en Python e en Basic reside na maneira na que se accede ao obxecto da folla empregando a variábel de contexto XSCRIPTCONTEXT. Despois disto, todos os métodos e propiedades son idénticos en Basic e en Python.
As celas do Calc poden ter tres tipos de valores: números, cadeas e fórmulas. Cada tipo ten os seus métodos de definición e lectura de valores:
| Tipo | Get Method | Set Method | 
|---|---|---|
| Numérico | getValue() | setValue(newValue) | 
| Texto | getString() | setString(newString) | 
| Fórmula | getFormula() | setFormula(newFormula) | 
As datas e os valores monetarios considéranse valores numéricos no Calc.
O exemplo seguinte introduce valores numéricos nas celas «A1» e «A2» e insire unha fórmula na cela «A3» que devolve a multiplicación destes valores.
    oSheet = ThisComponent.CurrentController.getActiveSheet()
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(10)
    oCell = oSheet.getCellRangeByName("A2")
    oCell.setValue(20)
    oCell = oSheet.getCellRangeByName("A3")
    oCell.setFormula("=A1*A2")
  Os exemplos anteriores empregan só a folla activa para realizar operacións. É posíbel acceder a intervalos de celas en follas diferentes polos seus índices ou nomes.
O exemplo de abaixo introduce un valor numérico na cela «A1» da folla chamada «Sheet2».
    oSheet = ThisComponent.Sheets.getByName("Sheet2")
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(123)
  Este exemplo tamén se pode implementar en Python deste xeito:
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.Sheets["Sheet2"]
    cell = sheet.getCellRangeByName("A1")
    cell.setValue(123)
  Tamén é posíbel acceder ás follas empregando índices que comecen en cero que indican a folla considerando a orde na que aparecen no ficheiro de Calc.
En Basic, no canto de empregar o método getByName, empregue Sheets(sheetIndex), como se mostra aquí:
    oSheet = ThisComponent.Sheets(0)
  Isto pódese facer de forma semellante en Python:
    sheet = doc.Sheets[0]
  Pódese empregar o servizo de Calc da biblioteca ScriptForge para obter e definir valores deste xeito:
    ' Carga a biblioteca ScriptForge
    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    ' Obtén acceso ao documento de Calc actual
    oDoc = CreateScriptService("Calc")
    ' Define o valor das celas A1 e A2
    oDoc.setValue("A1", "Hello")
    oDoc.setValue("A2", 123)
  Pódese empregar o método setValue para definir valores tanto numéricos como textuais. Para definir unha fórmula nunha cela empregue o método setFormula.
Co servizo de Calc, pódense obter e definir valores de celas cunha única liña de código. O exemplo de abaixo obtén o valor da cela «A1» e móstrao nunha caixa de mensaxe.
    Dim val as Variant, oDoc as Object
    oDoc = CreateScriptService("Calc")
    val = oDoc.getValue("A1")
    MsgBox val
  A biblioteca ScriptForge tamén simplifica o acceso a intervalos en follas diferentes, como se demostra no exemplo de abaixo:
    Dim val1, val2
    ' Obtén a cela «A1» da folla «Sheet1»
    val1 = oDoc.getValue("Sheet1.A1")
    ' Obtén a cela «B3» da folla «Sheet2»
    val2 = oDoc.getValue("Sheet2.B3")
    ' Coloca o resultado na cela «A1» da folla «Report»
    Dim result : result = val1 * val2
    oDoc.setValue("Report.A1", result)
  Tamén é posíbel implementar os exemplos anteriores en Python deste xeito:
    from scriptforge import CreateScriptService
    doc = CreateScriptService("Calc")
    doc.setValue("A1", "Hello")
  
    doc = CreateScriptService("Calc")
    bas = CreateScriptService("Basic")
    val = doc.getValue("A1")
    bas.MsgBox(val)
  
    first_val = doc.getValue("Sheet1.A1")
    second_val = doc.getValue("Sheet2.B3")
    result = first_val * second_val
    doc.setValue("Report.A1", result)