Utilizar una función de Calc desde una macro
OpenOffice Calc integra muchas funciones útiles para nuestras macros. Con este sencillo truco puedes utilizarlas para tus propósitos fácilmente.
Este truco lo he obtenido a partir de un post de Mauricio en el Foro Oficial en Español de OpenOffice.Option Explicit
Sub PruebaFuncionCalc
Dim dSuma As Double
' Podemos utilizar funciones de Calc desde una macro de dos modos
' Modo 1: Poniendo la formula en una celda, obtiendo su valor
Dim oHoja As Object
oHoja = ThisComponent.CurrentController.ActiveSheet
oHoja.getCellRangeByName("A13").Formula = "=SUM(A1:A12)"
dSuma = oHoja.getCellRangeByName("A13").Value
oHoja.getCellRangeByName("A13").String = ""
' Modo 2: Aplicando la funcion suma directamente
dSuma = FuncionCalc( "SUM", Array(oHoja.getCellRangeByName("A1:A12")) )
End Sub
Function FuncionCalc( Nombre As String, Datos() )
' Esta función permite llamar a una función de Calc por su nombre en Inglés
Dim oSFA As Object
oSFA = createUnoService( "com.sun.star.sheet.FunctionAccess" )
FuncionCalc = oSFA.callFunction( Nombre, Datos() )
End Function
1 comentario
Hola
Me ha parecido muy interesante poder insertar las funciones nativas de CALC dentro del macro de OOo basic. Alctualmente estoy intentando insertar otra funcion que no sea SUM y he utilizado el Modo 2 de su explicacion anterior y al tener varias variables, en mi función, las he separado con comas, pero luego el resultado sale siempre 0. No me sale error, y la hoja activa es la correcta. Alguien me puede ayudar. Gracias !!!
Function FuncionCalc( Nombre As String, Datos() )
' Esta función permite llamar a una función de Calc por su nombre en Inglés
Dim oSFA As Object
oSFA = createUnoService( "com.sun.star.sheet.FunctionAccess" )
FuncionCalc = oSFA.callFunction( Nombre, Datos() )
End Function
Sub testNativFunctions
Dim dSuma As Double
Dim oHoja As Object
oHoja = ThisComponent.CurrentController.ActiveSheet
dSuma = FuncionCalc( "MATCH", Array("Zona",oHoja.getCellRangeByName("A1:A12"),0) )
Msgbox dSuma
End sub

