Documentos de Académico
Documentos de Profesional
Documentos de Cultura
wiki.open-office.es
Basic
Ver.4.1.x
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 1/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Posición de la celda
Posición de un rango
Insertar celdas
Eliminar celdas
Copiar celdas
Copiar celdas entre libros
Mover celdas
Mover celdas entre libros
Borrar contenido de celdas
Exportar
Exportar en formato Excel
Exportar en formato Excel con contraseña
Devolver las celdas seleccionadas como una tabla HTML
Eventos
Evento Al cambiar la selección en Calc (http://blog.open-office.es/basic/evento-al-cambiar-la-seleccion-en-openoffice-libreoffice-calc)
Cambiar el cursor o puntero del ratón en OpenOffice Basic (http://blog.open-office.es/basic/cambiar-el-cursor-o-puntero-del-raton-en-openoffice-basic)
Reproducir sonidos en una hoja de cálculo de OpenOffice Calc (http://blog.open-office.es/calc/reproducir-sonidos-en-una-hoja-de-calculo-de-openoffice-calc)
Insertar la hora actual en OpenOffice Calc (http://blog.open-office.es/basic/insertar-la-hora-actual-en-openoffice-calc)
Otras
Copiar una celda (con executeDispatch)
Pegar en una celda (con executeDispatch)
Extraer URL y Texto de un hiperenlace
Opcionalmente se le puede pasar un array aOpciones() de tipo com.sun.star.bean.PropertyValue, con las opciones deseadas para abrir el documento.
Ejemplos:
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 2/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Abrir un libro Calc existente
Abrir un archivo CSV desde Calc, delimitado por puntos y comas, usando como delimitador de texto las comillas dobles, desde la fila 1:
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 3/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
HojaPorNombre = oLibro.Sheets.GetByName( cHoja )
End Function
Mediante un bucle For Each x In z Next se recorren todas las hojas del libro pasado como argumento.
Mediante un objeto Enumeration se recorren todas las hojas del libro pasado como argumento.
While eHojas.HasMoreElements
oHoja = eHojas.NextElement()
' aquí tu código
MsgBox "Hoja actual es " & oHoja.getName
Wend
End Sub
Nueva hoja
Inserta una nueva hoja con nombre cNombre en el libro pasado como argumento. Devuelve un objeto con la nueva hoja insertada.
Ejemplo de uso
Índice de la fila
Devuelve el índice de la fila nFila, que es un número entre 1 y 1.048.576, y se corresponde con el número de encabezado de la fila. El índice es un número menos (la
primera fila tiene como índice el valor 0).
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 4/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Si el valor pasado es mayor que cero, la fila tomará ese nuevo alto. Si estaba oculta, se mostrará.
Si el valor pasado es un valor negativo (menor de 0), se aplicará el ajuste óptimo de alto de fila o autoajuste.
Si el valor pasado es 0 la fila no se mostrará (fila oculta).
Si no se le pasa ningún valor, actúa como función y devuelve el alto de la fila en milésimas de centímetro. Un valor 1000 se corresponde con 1 cm.
Si el valor pasado es mayor que cero, la fila tomará ese nuevo alto. Si estaba oculta, se mostrará.
Si el valor pasado es un valor negativo (menor de 0), se aplicará el ajuste óptimo de alto de fila o autoajuste.
Si el valor pasado es 0 la fila no se mostrará (fila oculta).
Si no se le pasa ningún valor, actúa como función y devuelve el alto de la fila en centímetros.
Si no se pasa el argumento, la función devuelve el estado de visibilidad actual de la fila (True es visible, False en caso contrario)
Si se pasa el argumento lSaltoPagina, la fila será salto de página (True) o no lo será (False)
Si no se pasa el argumento, la función devuelve el estado de salto de página actual de la fila (True es salto de página, False en caso contrario)
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 5/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Índice de la columna
Devuelve el índice de la columna xColumna, que es un número entre 1 y 1.024, o una combinación de letras en el rango A-AMJ y se corresponde con el número
ordinal o la(s) letra(s) de encabezado de la columna. El índice es un número menos (la primera columna (columna A) tiene como índice el valor 0).
Si el valor pasado es mayor que cero, la columna tomará ese nuevo ancho. Si estaba oculta, se mostrará.
Si el valor pasado es un valor negativo (menor de 0), se aplicará el ajuste óptimo de ancho de columna o autoajuste.
Si el valor pasado es 0 la columna no se mostrará (columna oculta).
Si no se le pasa ningún valor, actúa como función y devuelve el ancho de la columna en milésimas de centímetro. Un valor 1000 se corresponde con 1 cm.
Si el valor pasado es mayor que cero, la columna tomará ese nuevo ancho. Si estaba oculta, se mostrará.
Si el valor pasado es un valor negativo (menor de 0), se aplicará el ajuste óptimo de ancho de columna o autoajuste.
Si el valor pasado es 0 la columna no se mostrará (columna oculta).
Si no se le pasa ningún valor, actúa como función y devuelve el ancho de la columna en centímetros.
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 6/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
If nAncho < 0 Then ' si nAncho es negativo entonces aplico ancho óptimo
oColumna.setPropertyValue( "OptimalWidth", True )
Else
oColumna.setPropertyValue( "Width", nAncho * 1000 )
EndIf
EndIf
ColumnaAnchoCm = oColumna.getPropertyValue( "Width" ) / 1000
End Function
Si no se pasa el argumento, la función devuelve el estado de visibilidad actual de la columna (True es visible, False en caso contrario)
Si se pasa el argumento lSaltoPagina, la columna será salto de página (True) o no lo será (False)
Si no se pasa el argumento, la función devuelve el estado de salto de página actual de la columna (True es salto de página, False en caso contrario)
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 7/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Celda activa
Devuelve un objeto celda, rango de celdas o grupo de rangos de celdas de la hoja pasada como argumento que se corresponde con la celda activa (actualmente
seleccionada), rango de celdas seleccionadas o grupo de rangos de celdas seleccionadas.
Texto de la celda
Establece o devuelve1 el texto del objeto celda que se pasa como argumento.
Si se pasa una cadena vacía o una cadena con texto, se sustituirá el contenido de la celda por la cadena pasada.
Si no se le pasa ninguna cadena, actúa como función y devuelve el texto contenido en la celda.
Valor de la celda
Establece o devuelve1 el valor numérico del objeto celda que se pasa como argumento.
Si se pasa una valor, se sustituirá el valor de la celda por el valor pasado. El texto presentado por la celda depende del formato que tenga asignado la celda.
Si no se le pasa ningún valor, actúa como función y devuelve el valor numérico contenido en la celda.
Fórmula de la celda
Establece o devuelve1 la fórmula del objeto celda que se pasa como argumento.
Si se pasa una cadena vacía o con una fórmula, se sustituirá la fórmula de la celda por la cadena pasada.
La fórmula tiene que utilizar comas o puntos y comas para separar argumentos, acorde a la configuración local, pero los nombres de las funciones deben de
estar escritos en su equivalente en inglés.
Para escribir comillas dentro de la cadena en el editor de Basic, utilizaremos dobles comillas dos veces, como se muestra en el ejemplo a continuación.
Ejemplo:
Queremos establecer una celda con la fórmula =SI(A1>100;"MAYOR";"MENOR"). El argumento cFormula deberá ser:
=IF(A1>100;""MAYOR"";""MENOR"") si la configuración local establece separar con puntos y comas los argumentos, o...
=IF(A1>100,""MAYOR"",""MENOR"") si la configuración local establece separar con comas los argumentos.
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 8/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Si no se le pasa ninguna cadena, actúa como función y devuelve una cadena con la fórmula contenida en la celda, en formato inglés, pero utilizará comas o
puntos y comas para separar argumentos, acorde a la configuración local.
Ejemplo:
Una celda contiene la fórmula =SI(A1>100;"MAYOR";"MENOR"), pues se utilizan puntos y comas para separar argumentos acorde
a la configuración local. La función CeldaFormula devolverá:
=IF(A1>100;"MAYOR";"MENOR") si la configuración local establece separar con puntos y comas los argumentos, o...
=IF(A1>100,"MAYOR","MENOR") si la configuración local establece separar con comas los argumentos.
Si se pasa una cadena vacía o con una fórmula, se sustituirá la fórmula de la celda por la cadena pasada.
La fórmula tiene que utilizar comas o puntos y comas para separar argumentos acorde a la configuración local.
Para escribir comillas dentro de la cadena en el editor de Basic, utilizaremos dobles comillas dos veces, como se muestra en el ejemplo a continuación.
Ejemplo:
Queremos establecer una celda con la fórmula =SI(A1>100;"MAYOR";"MENOR"). El argumento cFormula deberá ser:
=SI(A1>100;""MAYOR"";""MENOR"") si la configuración local establece separar con puntos y comas los argumentos, o...
=SI(A1>100,""MAYOR"",""MENOR"") si la configuración local establece separar con comas los argumentos.
Si no se le pasa ninguna cadena, actúa como función y devuelve una cadena con la fórmula contenida en la celda; utilizará comas o puntos y comas para
separar argumentos acorde a la configuración local.
Ejemplo:
Una celda contiene la fórmula =SI(A1>100;"MAYOR";"MENOR"), pues se utilizan puntos y comas para separar argumentos acorde
a la configuración local. La función CeldaFormulaLocal devolverá =IF(A1>100;"MAYOR";"MENOR").
Una celda contiene la fórmula =SI(A1>100,"MAYOR","MENOR"), pues se utilizan comas para separar argumentos acorde a la
configuración local. La función CeldaFormulaLocal devolverá =IF(A1>100,"MAYOR","MENOR").
Posición de la celda
Devuelve la posición que ocupa el objeto celda que se pasa como argumento.
La posición de la celda viene definida por una estructura CellAddress que contiene los siguientes datos:
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 9/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
' CellAddress es una estructura con los siguientes datos
' Sheet : Índice de la Hoja
' Column : Índice de la Columna de la celda
' Row : Índice de la Fila de la celda
CeldaPosicion = oCelda.CellAddress
End Function
Ejemplo de uso
Sub main
Dim miCelda As Object, xPosicion
miCelda = CeldaActiva()
xPosicion = CeldaPosicion( miCelda )
Print "La celda está en la hoja " & xPosicion.Sheet + 1
Print "La celda está en la columna " & xPosicion.Column + 1
Print "La celda está en la fila " & xPosicion.Row + 1
End Sub
Posición de un rango
Devuelve la posición que ocupa el objeto celda o rango de celdas que se pasa como argumento.
La posición de un rango de celdas viene definida por una estructura CellRangeAddress que contiene los siguientes datos:
El rango puede ser de una sola celda; en ese caso, los valores Start y End coinciden.
Ejemplo de uso
Sub main
Dim miRango As Object, xPosicion
miRango = CeldaActiva()
xPosicion = CeldaRangoPosicion( miRango )
Print "El rango está en la hoja " & xPosicion.Sheet + 1
Print "El rango comienza en la columna " & xPosicion.StartColumn + 1 & ", fila " & xPosicion.StartRow + 1
Print "El rango termina en la columna " & xPosicion.EndColumn + 1 & ", fila " & xPosicion.EndRow + 1
End Sub
Insertar celdas
Esta subrutina permite insertar en la hoja pasada como argumento una celda o rango de celdas a partir de la posición definida por cRango con el formato A1 para una
celda, o A1:A1 para un rango de celdas.
Si cRango es una celda, se inserta una celda; si cRango es un rango de celdas, por ejemplo, de 5x4 celdas, se insertan 5x4 celdas.
Al insertar las nuevas celdas, las existentes en esa posición se desplazarán en la dirección indicada por cDireccion (es indiferente al uso de mayúsculas o minúsculas).
Cadena vacía, se omite, a, abajo o down: Las nuevas celdas insertadas desplazan a las celdas existentes hacia abajo.
d, derecha o right: Las nuevas celdas insertadas desplazan a las celdas existentes hacia la derecha.
f, filas o rows: Las nuevas celdas se insertan como filas completas, desplazando a las filas existentes hacia abajo.
c, columnas o columns: Las nuevas celdas se insertan como columnas completas, desplazando a las columnas existentes hacia la derecha.
Ejemplo de uso
Sub main
Dim oLibro As Object, oHoja As Object
oLibro = Libro()
oHoja = HojaActiva( oLibro )
CeldaInserta oHoja, "F9:H12", "derecha"
End Sub
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 10/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Eliminar celdas
Esta subrutina permite eliminar en la hoja pasada como argumento una celda o rango de celdas a partir de la posición definida por cRango con el formato A1 para una
celda, o A1:A1 para un rango de celdas.
Si cRango es una celda, se elimina esa celda; si cRango es un rango de celdas, por ejemplo, de 5x4 celdas, se eliminan las 5x4 celdas.
Al eliminar las celdas, el espacio vacío se ocupa por las celdas vecinas, que se desplazarán en la dirección indicada por cDireccion (es indiferente al uso de mayúsculas
o minúsculas).
Cadena vacía, se omite, a, arriba o up: Las celdas situadas justo debajo suben para ocupar el espacio vacío dejado por las eliminadas.
i, izquierda o left: Las celdas situadas justo a la derecha se desplazan a la izquierda para ocupar el espacio vacío dejado por las eliminadas.
f, filas o rows: Se eliminan filas completas; las filas situadas justo debajo suben para ocupar el espacio vacío dejado por las eliminadas.
c, columnas o columns: Se eliminan columnas completas; las columnas situadas justo a la derecha se desplazan a la izquierda para ocupar el espacio vacío
dejado por las eliminadas.
Copiar celdas
Esta subrutina copia desde la hoja origen pasada como objeto en oHojaOrg, una celda o rango de celdas indicados por cRangoOrg, hasta una hoja destino (que puede
ser la misma hoja, una hoja distinta del mismo libro o una hoja de otro libro) pasada como objeto en oHojaDst, y lo pega en la posición definida por la celda cCeldaDst.
cCeldaDst se especifica con formato A1; cRangoOrg con formato A1 si es una celda, o A1:A1 si es un rango. Precisa de las funciones Celda y Rango.
Este procedimiento sólo es válido para cuando la hoja origen y la hoja destino están en el mismo libro. En caso contrario, no funciona, pero puedes aplicar el
procedimiento CeldaCopiaEntreLibros.
Sub CeldaCopia( oHojaOrg As Object, cRangoOrg As String, oHojaDst As Object, cCeldaDst As String )
'--------------------------------------------------------------------------------------------
Dim oRangoOrg As Object, oCeldaDst As Object, _
oAddressOrg As New com.sun.star.table.CellRangeAddress, _
oAddressDst As New com.sun.star.table.CellAddress
Este procedimiento es válido para cuando la hoja origen y la hoja destino no están en el mismo libro.
Sub CeldaCopiaEntreLibros( oHojaOrg As Object, cRangoOrg As String, oHojaDst As Object, cRangoDst As String )
'--------------------------------------------------------------------------------------------
Dim oRangoOrg As Object, oRangoDst As Object, oDataArrayOrg As Object
oRangoOrg = Rango( oHojaOrg, cRangoOrg )
oDataArrayOrg = oRangoOrg.getDataArray()
oRangoDst = Rango( oHojaDst, cRangoDst )
oRangoDst.setDataArray( oDataArrayOrg )
End Sub
Mover celdas
Esta subrutina corta desde la hoja origen pasada como objeto en oHojaOrg, una celda o rango de celdas indicados por cRangoOrg, hasta una hoja destino (que puede
ser la misma hoja, una hoja distinta del mismo libro o una hoja de otro libro) pasada como objeto en oHojaDst, y lo pega en la posición definida por la celda cCeldaDst.
cCeldaDst se especifica con formato A1; cRangoOrg con formato A1 si es una celda, o A1:A1 si es un rango. Precisa de las funciones Celda y Rango.
Este procedimiento sólo es válido para cuando la hoja origen y la hoja destino están en el mismo libro. En caso contrario, no funciona, pero puedes aplicar el
procedimiento MoverCeldasEntreLibros.
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 11/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Sub CeldaMueve( oHojaOrg As Object, cRangoOrg As String, oHojaDst As Object, cCeldaDst As String )
'--------------------------------------------------------------------------------------------
Dim oRangoOrg As Object, oCeldaDst As Object, _
oAddressOrg As New com.sun.star.table.CellRangeAddress, _
oAddressDst As New com.sun.star.table.CellAddress
Este procedimiento es válido para cuando la hoja origen y la hoja destino no están en el mismo libro.
Sub CeldaMueveEntreLibros( oHojaOrg As Object, cRangoOrg As String, oHojaDst As Object, cRangoDst As String )
'--------------------------------------------------------------------------------------------
CeldaCopiaEntreLibros oHojaOrg, cRangoOrg, oHojaDst, cRangoDst
CeldaBorra oHojaOrg, cRangoOrg
End Sub
cFlags es una cadena en la que separadas por comas se indican las opciones de borrado, que pueden ser cualquier combinación de las siguientes claves:
v, valor, value, n, número, numero: Si se incluye, se borra el valor numérico que contiene la celda o rango.
fh, fechahora, dt, datetime: Si se incluye, se borra el valor numérico en la celda o rango de celdas con formato de fecha/hora.
t, texto, s, string: Si se incluye, se borra el texto que contiene la celda o rango.
c, comentario, a, annotation: Si se incluye, se borra el comentario que contiene la celda o rango.
f, fórmula, formula: Si se incluye, se borra la fórmula que contiene la celda o rango.
fc, formato, formato celda, formateo, ce, cell formatting, hardattr: Si se incluye, se borra el formato aplicado a la celda o rango en modo selección, pero
no los atributos ni el estilo ni el formato en modo edición.
e, estilo, s, style: Si se incluye, se borra el estilo asignado a la celda o rango.
o, objeto, object: Si se incluye, se borran los objetos gráficos insertados en la celda o rango.
at, atributos, ea, 'edit attributes', 'editattr': Si se incluye, se borran los atributos de edición (alineado, sangría, etc) aplicados a la celda o rango.
fe, formato edición, formato edicion, ef, edition formatting, formatted: Si se incluye, se borra el formato aplicado a la celda o rango en modo edición.
No se especifica o cadena vacía: Se borra todo.
Ejemplo de uso:
Sub main
Dim oLibro As Object, oHoja As Object
oLibro = Libro()
oHoja = HojaActiva( oLibro )
' Borro SÓLO los comentarios, formato de celda y formato de atributos
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 12/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
' del rango de celdas F7:H10, manteniendo el resto de información
CeldaBorra( oHoja, "F7:H10", "c,fc,at" )
End Sub
cColor puede ser un nombre, clave, color RGB en hexadecimal o cadena con los tres componentes RGB separados por comas, aceptados por la función ColorRGB.
Si se pasa una cadena, se sustituirá el color de fondo de la celda o rango por el valor pasado.
Si se omite el argumento, actúa como función y devuelve el color de fondo de la celda o rango. Si la celda o rango carecen de color de fondo, o el rango de
celdas tienen asignados distintos colores de fondo, devuelve -1.
rojo, r, red, rojo oscuro, r-, black red, rojo claro, r+, white red, amarillo, y, yellow, amarillo oscuro, y-, black yellow, amarillo claro, y+, white yellow,
verde, g, green, verde oscuro, g-, black green, verde claro, g+, white green, azul, b, blue, azul oscuro, b-, black blue, azul claro, b+, white blue, gris, gr,
grey, gris oscuro, gr-, black grey, gris claro, gr+, white grey, blanco, w, white, cian, c, cyan, magenta, m, magenta. Si r es rojo, r- es una tonalidad de
rojo más oscuro y r- es una tonalidad de rojo más claro.
El código de color hexadecimal, precedido por "&H"; por ejemplo, "&HFFFFFF" es el código para el color blanco.
Los componentes RGB expresados como valores numéricos en una cadena separados por comas; por ejemplo "255,255,255" es el código RGB para el
color blanco.
Case Else ' vacío = negro / Valor RGB hexadecimal / valores RGB separados por comas
Dim r, g, b, aColor() As String
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 13/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
nRGB = nRGB - ( r * x )
Si se omite el argumento, actúa como función y devuelve el estado de transparencia de la celda o rango como un valor booleano.
La sombra de una celda o rango de celdas viene definida por una estructura ShadowFormat que contiene los siguientes datos:
El rango puede ser de una sola celda; si no lo es, la sombra se aplica a todas las celdas del rango como un bloque.
cColor puede ser un nombre, clave, color RGB en hexadecimal o cadena con los tres componentes RGB separados por comas, aceptados por la función
ColorRGB.
cPosicion es una cadena de texto con uno de los siguientes valores (es indiferente al uso de mayúsculas o minúsculas):
Cadena vacía, none: No cambia la posición de la sombra. Si no se ha especificado antes una de las siguientes opciones, la sombra no se muestra.
bd, bajo_derecha, br, bottom_right: La sombra se muestra abajo a la derecha de la celda o rango de celdas.
bi, bajo_izquierda, bl, bottom_left: La sombra se muestra abajo a la izquierda de la celda o rango de celdas.
ad, arriba_derecha, tr, top_right: La sombra se muestra arriba a la derecha de la celda o rango de celdas.
ai, arriba_izquierda, tl, top_left: La sombra se muestra arriba a la izquierda de la celda o rango de celdas.
nAncho es un valor numérico que establece las dimensiones de la sombra en milésimas de cm (1000 es 1cm, 150 es 0,15cm = 15mm). La sombra se creará
desplazada de la celda en esas dimensiones, en las direcciones establecidas por cPosicion.
lTransparente es un valor booleano que establece que la sombra sea transparente (True, no se muestra), o no (False, se muestra).
Si no se pasan alguno de los otros argumentos, sus valores por defecto son: cPosicion="bg", nAncho=150, lTransparente=False (abajo a la derecha,
de 15 mm, no transparente).
Si se omite el argumento cColor, el resto de argumentos se ignoran y actúa como función, devolviendo una estructura ShadowFormat con las propiedades
de sombra del objeto celda o rango de celdas pasado.
Si la celda o rango no tiene sombra asignada, o el rango tiene distintas propiedades de sombra, los valores devueltos por la función son:
Color=8421504 (que se corresponde con RGB(128,128,128) o gris al 50%), ShadowLocation=0, ShadowWidth=176, IsTransparent=False.
Function CeldaRangoSombra( oCeldaRango As Object, Optional cColor As String, Optional cPosicion As String, _
Optional nAncho As Long, Optional lTransparente As Boolean ) As com.sun.star.table.ShadowFormat
'--------------------------------------------------------------------------------------------
Dim oSombra As New com.sun.star.table.ShadowFormat
If Not IsMissing( cColor) Then
If IsMissing( cPosicion) Then cPosicion = "bd"
If IsMissing( nAncho) Then nAncho = 150
If IsMissing( lTransparente) Then lTransparente = False
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 14/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Ejemplo de uso:
Sub main
Dim oLibro As Object, oHoja As Object, oRango As Object, s
oLibro = Libro()
oHoja = HojaActiva( oLibro )
oRango = CeldaActiva()
' Establecer la sombra
CeldaRangoSombra( oRango , "gr+", "bd", "160", False )
La justificación horizontal de una celda o rango de celdas viene definida por una enumeración CellHoriJustify que puede ser:
0: justificación horizontal Estándar: Los textos se alinean a la izquierda, y los valores numéricos (números, fechas, horas, monedas) a la derecha.
1: justificación horizontal Izquierda: El contenido de la celda se alinea pegado al borde izquierdo.
2: justificación horizontal Centro horizontal: El contenido de la celda se alinea centrado horizontalmente en la celda.
3: justificación horizontal Derecha: El contenido de la celda se alinea pegado al borde derecho.
4: justificación horizontal Justificado: Si la celda tiene activa la propiedad Ajustar texto automáticamente y se muestra como ocupando varias líneas, el
contenido de la celda se alinea justificado entre los bordes derecho e izquierdo (aumentando el tamaño de los espacios en blanco), a excepción de la
(supuesta) última línea que se alinea a la izquierda (y en la que los espacios en blanco no cambian de tamaño).
5: justificación horizontal Repetir: El contenido de la celda se repite (completo) tantas veces como sea necesario para rellenar toda la celda a lo ancho.
El argumento cJustificacionH de la función es una cadena que puede tomar uno de los siguientes valores (es indiferente al uso de mayúsculas o minúsculas):
Si se omite el argumento cJustificacionH, actúa como función, devolviendo un valor entero correspondiente a la justificación horizontal del objeto celda o
rango de celdas pasado.
Si el objeto rango pasado tiene celdas con distintas propiedades de justificación horizontal, la función devuelve 0.
La justificación vertical de una celda o rango de celdas viene definida por una enumeración CellVertJustify que puede ser:
El argumento cJustificacionV de la función es una cadena que puede tomar uno de los siguientes valores (es indiferente al uso de mayúsculas o minúsculas):
Si se omite el argumento cJustificacionV, actúa como función, devolviendo un valor entero correspondiente a la justificación vertical del objeto celda o
rango de celdas pasado.
Si el objeto rango pasado tiene celdas con distintas propiedades de justificación vertical, la función devuelve 0.
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 15/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
'--------------------------------------------------------------------------------------------
If Not IsMissing( cJustificacionV) Then
Select Case LCase( cJustificacionV)
Case "0", "", "e", "estándar", "s", "standard"
oCeldaRango.setPropertyValue( "VertJustify", com.sun.star.table.CellVertJustify.Standard )
Case "1", "s", "superior", "t", "top"
oCeldaRango.setPropertyValue( "VertJustify", com.sun.star.table.CellVertJustify.TOP )
Case "2", "m", "medio", "c", "centro", "center"
oCeldaRango.setPropertyValue( "VertJustify", com.sun.star.table.CellVertJustify.CENTER )
Case "3", "i", "inferior", "b", "bottom"
oCeldaRango.setPropertyValue( "VertJustify", com.sun.star.table.CellVertJustify.BOTTOM )
End Select
EndIf
CeldaRangoJustificacionV = oCeldaRango.getPropertyValue( "VertJustify" )
End Function
La orientación del texto de una celda o rango de celdas viene definida por una enumeración CellOrientation que puede ser:
El argumento cOrientacion de la función es una cadena que puede tomar uno de los siguientes valores (es indiferente al uso de mayúsculas o minúsculas):
Si se omite el argumento cOrientacion, actúa como función, devolviendo un valor entero correspondiente a la orientación del objeto celda o rango de
celdas pasado.
Si el objeto rango pasado tiene celdas con distintas propiedades de orientación, la función devuelve 0.
La orientación del texto de una celda o rango de celdas viene definida por una enumeración CellOrientation que puede ser:
El argumento cReferencia de la función es una cadena que puede tomar uno de los siguientes valores (es indiferente al uso de mayúsculas o minúsculas):
Si se omite el argumento cReferencia, actúa como función, devolviendo un valor entero correspondiente a la orientación del objeto celda o rango de celdas
pasado.
Si el objeto rango pasado tiene celdas con distintas propiedades de orientación, la función devuelve 0.
NOTA: La referencia de rotación "Dentro" se obtiene aplicando el valor com.sun.star.table.CellVertJustify.STANDARD, mientras que la referencia de rotación
"Estándar" se obtiene aplicando el valor com.sun.star.table.CellVertJustify.CENTER. Esto parece ser una incongruencia, pero no es erróneo (por nuestra parte).
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 16/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
oCeldaRango.RotateReference = com.sun.star.table.CellVertJustify.CENTER
Case "3", "bi", "bordeinferior", "b", "bottom"
oCeldaRango.RotateReference = com.sun.star.table.CellVertJustify.BOTTOM
End Select
EndIf
CeldaRangoReferenciaRotacion = oCeldaRango.RotateReference
End Function
La ángulo del texto de una celda o rango de celdas viene definida por el argumento nAngulo de la función, que es un valor de tipo Long entre 0 y 35999 que indica el
ángulo en centésimas de grado que toma el texto, siendo:
0: se corresponde con un ángulo de 00 (la posición de la manecilla de las horas en un reloj a las 03:00 horas)
9000: se corresponde con un ángulo de 900 (la posición a las 0:00 horas)
18000: se corresponde con un ángulo de 1800 (la posición a las 9:00 horas)
27000: se corresponde con un ángulo de 2700 (la posición a las 6:00 horas)
Si se omite el argumento nAngulo, actúa como función, devolviendo un valor entero correspondiente al ángulo en grados que toma el texto del objeto celda
o rango de celdas pasado.
Si el objeto rango pasado tiene celdas con distintas propiedades de ángulo, la función devuelve 0.
El ajusta del texto viene definido por el argumento lAjustarTexto de la función, que es un valor de tipo Booleano (verdadero o falso) que:
Si se pasa como True activa el ajuste del texto. Al activar el ajuste de texto, la fila tomará una nueva altura de forma automática suficiente para
mostrar todo el texto contenido dentro del ancho de la celda, salvo que la fila haya sido personalizada con una altura previamente, en cuyo caso,
prevalece la altura personalizada.
Si se pasa como False desactiva el ajuste del texto. Al desactivar el ajuste de texto, la fila recupera la altura que tenía previamente,, salvo que la fila
haya sido personalizada con una altura previamente a ser activado el ajuste de texto, en cuyo caso, prevalece la altura personalizada.
Si se omite el argumento lAjustarTexto, actúa como función, devolviendo un valor booleano correspondiente al estado de la propiedad Ajustar texto en
celda del objeto celda o rango de celdas pasado.
Si el objeto rango pasado tiene celdas con distintas propiedades de Ajustar texto en celda, la función devuelve False.
Se pretende rellenar con un valor xValor, y opcionalmente aplicar un formato cFormato la celda, rango de celdas o rangos múltiples que se pasan a la subrutina.
En el caso de que el formato no exista previamente en el banco de formatos del libro, se agregará.
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 17/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Id de formato numérico
Esta función recibe un formato numérico en cFormatoNumerico. Busca el formato en el banco de formatos del objeto libro oLibro pasado como argumento, y si no
existe, lo agrega; devuelve el Id o identificador único del formato numérico para ese libro.
oFrame = ThisComponent.CurrentController.Frame
If IsMissing(lVisible) Then lVisible = true
args(0).Name = cBarra
args(0).Value = lVisible
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch(oFrame, ".uno:" & cBarra , "", 0, args())
End Sub
Dim x as object
Set x = ThisComponent.CurrentController.StatusIndicator
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 18/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
If cTexto = "" Then ' Cerrar Barra de estado y restaurar estado
x.Reset ' elimina los valores actuales de texto y de la barra de progreso
x.End ' reestablece el funcionamiento por defecto de la barra de estado
Else
x.Start( PadR(cTexto,nLongitud),nMax )
x.SetValue(nValor) ' también es válido x.Value = nActual
Endif
End Sub
Ejemplo de uso
Sub Ejemplo()
Dim nAct as long, nTot as long
nTot = 100
nAct = 0
BarraEstado "Iniciando proceso", 60, nTot, nAct
Wait 1000
For nAct=0 To nTot
BarraEstado "Procesando " & nAct & " de " & nTot, 60, nTot, nAct
Wait 100
Next
BarraEstado "Proceso terminado", 60, nTot, nTot
Wait 1000
BarraEstado ""
End Sub
Exportar
Exportar en formato Excel
Sub Documento_ExportarAExcel( ByVal cNombreyRuta as String )
' Exporta el documento activo en formato Excel 97
' Hay que tener en cuenta los problemas con la exportación a Excel
Dim aArg(1) As New com.sun.star.beans.PropertyValue
aArg(0).Name = "InteractionHandler"
aArg(0).Value = ""
aArg(1).Name = "FilterName"
aArg(1).Value = "MS Excel 97"
cNombreyRuta = ConvertToURL( cNombreyRuta )
End Sub
aArg(0).Name = "InteractionHandler"
aArg(0).Value = ""
aArg(1).Name = "FilterName"
aArg(1).Value = "MS Excel 97"
aArg(2).Name = "ModifyPasswordInfo"
aArg(2).Value = 56789 ' inserta aquí una contraseña numérica
cNombreyRuta = ConvertToURL( cNombreyRuta )
End Sub
oSel = ThisComponent.getCurrentSelection()
lSeguir=False
Seleccion2TablaHTML = c
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 19/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
End Function
Otras
Copiar una celda (con executeDispatch)
Sub Celda_Copiar( cCelda as string )
Dim a(1) As New com.sun.star.beans.PropertyValue
Dim oDispatch as Object, oFrame as Object
oFrame = ThisComponent.CurrentController.Frame
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
a(0).Name = "ToPoint"
a(0).Value = cCelda ' por ejemplo, "$B$3" o "B3"
oFrame = ThisComponent.CurrentController.Frame
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
a(0).Name = "ToPoint"
a(0).Value = cCelda ' por ejemplo, "$B$3" o "B3"
Notas
1 ↑ Función que actúa como Set/Get según se pase o no el argumento opcional; si se pasa el argumento es una función Set que establece el valor; si no se pasa, es una
función Get que devuelve el valor actual.
Enlaces
Generar PDF gratis
Listas de enlaces con WordPress
Sumas y restas para niños
Clases particulares
Cual es mi IP
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 20/21
27/12/23, 8:49 Macros en Basic para Calc - Apache OpenOffice Basic
Inicio
Atrás
Arriba
https://wiki.open-office.es/Macros_en_Basic_para_OpenOffice_Calc#Posici.C3.B3n_de_la_celda 21/21