Usando o recurso do gravador de macro, consegui montar a minha primeira macro no BrOffice Calc. A listagem do código a seguir só funciona se você mudar a sintaxe da fórmula para Excel R1C1, através do Menu Ferramentas > Opções > Br Office Calc > Fórmula > Sintaxe da Fórmula. Eis o código:
sub Main
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim arg(0) as new com.sun.star.beans.PropertyValue
dim i as integer
for i = 1 to 10
arg(0).Name = "StringName"
arg(0).Value = str(i)
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, arg())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, arg())
arg(0).Value = "x"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, arg())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, arg())
arg(0).Value = "2"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, arg())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, arg())
arg(0).Value = "="
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, arg())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, arg())
arg(0).Value = "=RC[-4]*RC[-2]"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, arg())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, arg())
for j=1 to 4:dispatcher.executeDispatch(document, ".uno:GoLeft", "", , arg()):next j
next i
end sub