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